【RoR】Ruby on Rails Part20©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
1週間ぐらい、じっくりと腰を据えて、無料のRails チュートリアルをやれば?
学生でも、Rails合宿に行って、じっくり勉強したりする
まず、各フレームワークの仕組みを勉強しないといけない。
そのフレームワークのやり方以外の方法で、やってはいけない
フレームワークでは、フレームワークのやり方を守るというのが、一番大きいテーマ。
Rails のやり方と違うやり方をすると、コードレビューで必ず直される
YouTube に、伊藤淳一(junichi ito)の動画も、一杯ある YouTube に、伊藤淳一の動画が一杯ある
Junichi Ito
https://www.youtube.com/channel/UCekUxQPwLf-YCxbGtqeEmxg
【デバッグ解説動画】RailsアプリでAjaxがうまく動かないときに確認するポイントあれこれ
https://youtu.be/Nf0QjFx5O5k
Rails 5.1で作るVue.jsアプリケーション 〜Herokuデプロイからシステムテストまで〜
https://youtu.be/ycOeM2umXkY ajaxの方はjsで何度も実装したことはあるけど
Railsの方がまだ慣れてなくてよくわからんのよね
ためしに描いてみたけど view 見つからんって怒られた
[config/route.rb]
member action 追加
[views/index.html.erb]
link_to でヘルパーパスに飛ばしてオプションで remote:true と id:ajaxつけた
メッセージエリアの空の div#msg 追加して
$(‘#ajax’).bind("ajax:complete", function(xhr, response, status){
let result = JSON.parse(response.responseText)[0];
$(‘#msg’).html(result);
})
[controllers/]
アクション定義にDB更新して format で結果メッセージ返すコード追加
viewいらんとおもうんだけどアクションだけってかけないの? これもう action 追加とかしないで
link_to から js の onclick メソッドに飛ばして
js でリクエスト投げる方が早いんだが
Rails 的には汚い書き方になるん? いやすまん 何言ってんだ
いずれにしろDB更新するのはサーバーサイドで書かにゃいけないからコントローラーアクションは必要だったわ フロントエンド部分をAjaxでやるのなら
Rails側はモデルのメソッドを直接呼べればそれで十分だと思うよ。
もちろん外部からアクセス制御は必要になるけど
それがコントローラの役目になるんだろうけど大したことしないから
コントローラー取り払ってモデルとコントローラを合体させたものが
作れたらそれが良い remote:true がturbolink ってやつなのね
でこれをつけると
respond_to do |format|
で format.js にマッチするらしくて
今までバカの一つ覚えで format.html に render の上書き描いてたから
これを通らずにでデフォルトの render テンプレ探しに言ってたっぽい
format 関係無く
render text ‘終わった’ ってかけば
view テンプレートは探さなくなってエラー消えたわ
けど結果受けとってDOM変えるのが動かん
リンクに ajax 変更するDOMに msg ってIDつけて
$(‘#ajax’).bind("ajax:complete", function(xhr, response, status){
let result = JSON.parse(response.responseText)[0];
$(‘#msg’).html(result);
})
こんなJS埋め込むだけじゃダメなんか コントローラーでtextを返してjsでうけとるんじゃなく
js自体を返せばいい
リンクをクリックしたらブックマークレットみたいにJSが動いてDOMが変化するイメージ >>742
違うぞ。色々書いていたが書き込めなかった remote:true がturbolink ってやつなのね
でこれをつけると
respond_to do |format|
で format.js にマッチするらしくて
今までバカの一つ覚えで format.html に render の上書き描いてたから
これを通らずにでデフォルトの render テンプレ探しに言ってたっぽい
format 関係無く
render text ‘終わった’ ってかけば
view テンプレートは探さなくなってエラー消えたわ
けど結果受けとってDOM変えるのが動かん
リンクに ajax 変更するDOMに msg ってIDつけて
$(‘#ajax’).bind("ajax:complete", function(xhr, response, status){
let result = JSON.parse(response.responseText)[0];
$(‘#msg’).html(result);
})
こんなJS埋め込むだけじゃダメなんか 何が書き込み禁止されてうrんだか。
リンクリンクリンクページページページ remote:true がTurbolinks
remote:true がTurbolinks
remote:true がTurbolinks 何が書き込み禁止されてうrんだか。
リンクリンクリンクページページページ
remote:true がTurbolinks
remote:true がTurbolinks
remote:true がTurbolinks >>731,737,739,740,742 は自分だけどそれ以降はちがうぞ? >>736
の、Rails + Vue.js の動画を見れば?
Ajax で、DB を更新して、画面表示してる ルートとヘルパーパスについて聞きたいんですが
既存の route.rb が
resources か action URL の1行だけで
member や collection の記述がないんですが
この場合パスヘルパーは使えないんでしょうか
resources :users do
member do
get :action
end
end
みたいにかけば action_usr_path は使えるんですけど
resources users
get 'users/:id/action’ => 'users#action’
とだけ書いた場合
追加した action_user_path が undefined になります
view には usr_path() + ‘/action’ と書くしかないですか? エラーのハンドリングってどうしたらいいの?
調べてもエラーのハンドリングは勝手にやってくれるから
自分でやんなくていいって記事ばかりなんだけど
データベースアクセス中に何かおこったら全部502とかになっちゃうので
エラーページに飛ばしてメッセージ表示するぐらいはしたい
フォームボタン押したらアクション先で502が起こった時どうやって捉えたらいいの? railに乗る気が無いならrails使うべきではない >>753
は? 502エラーで表示される画面を変えるだけじゃん
すでに502エラーページに飛んでるだろ?
すでにメッセージ出てるだろ?
その画面をお前の好きなデザインにするだけだろ >>752
>get 'users/:id/action’ => 'users#action’
こんな風に文字列で定義しちゃうとパスヘルパーは定義されないので
user_path(id) + ‘/action’とするしかないですな 英語のエラー画面が出れば、それを日本語にするだけじゃないの?
国際化は自動的にやってくれないの?
設定ファイルに日本語と書けば、自動的に日本語に変わらないの? エラーを日本語に翻訳されたら余計判らなくなるからやめれ >>755,758
指示もよくわからないんだけど
設計時に意図してない502エラーが出るから
それをハンドリングして適切なエラー画面を出してくれって意味かなと
ただアクション内で502エラーだけを捉える方法
ってあるのかよくわからなくて
エラー何でもかんでも rescue するのってよくないよね? あと
フォームの値チェックして
OKだったら確認画面だして
それもOKだったらDB更新って仕様なんだけど
3つの遷移全部アクション書かなきゃダメ?
確認画面だしてから値チェックしてエラーor正常ならDB更新なら
フォームに confirm つけるだけでアクション1個でいいんだけど
値チェックしてから確認画面出すのって1回サーバー経由しないと無理だよね? そういうの面倒だからみんなjavascriptいっちゃうんだな ajaxわからない
remote:true でコントローラから js 帰ってくるでしょ?
controler で
render js: “$(‘#popup’).html("<%= j (render ‘point_form') %>”);”
って書くと動かなくて
テンプレートの js.erb に
$(‘#popup’).html("<%= j (render ‘point_form') %>”);
って書くと動くのなんで?
この1行のためにテンプレート増やしたくないんだけど render js: “$(‘#popup’).html(\"<%= j (render ‘point_form') %>\”);”
じゃね?
知らんけど ダメだわ
#がコメント扱いになる
あと Rails の view の js の文字列の中に Rails で生成した文字列入れるのってどうやるの?
<%= f.submit '送信', :class => 'button', :html => { :onsubmit => "return window.confirm('<%= (t 'confirm') %>)" }
的なことを書きたいけどどう書いていいかわからん
フレームワークがネストしてると文字列の扱いがクッソ面倒だな RailsはAPIサーバーに撤すればいいじゃん。
ver5でAPIモードが付いたけどそういうことだろ。
SPAフレームワーク使っても使わなくてもいいけどフロントでAPI経由でJSON取って構築。
シンプルになったな! >>760
だーかーらー、正常に502エラーがでてるだろ
それでいいんだよ。
気に食わないなら見た目を変えればいいだけ >>766
APIサーバーって言ってもな、ログインとか少しだけ必要だったりするわけだよ。
APIモードっていうのは失敗だった。
APIアクションを簡単に作れるようにすべきだった レールに沿って一本道じゃなく
Laravelみたいにモジュールを
組み合わせられればいいのに >>769
Railsもモジュールを組み合わせるが?
そもそもレールは一本道ではない。切り替えられる。 >>763-764
所々に、全角文字が混じっているから、動かないのでは?
>>765
%()・%Q() は、ダブルクォートで囲むのと同じ。
変数・定数の展開もできる
%q() は、シングルクォートで囲むのと同じ。
変数・定数の展開はできない
Rubyで%記法(パーセント記法)を使う
https://qiita.com/mogulla3/items/46bb876391be07921743
「パーセント記法 クオート」などで検索! パーセント記法って恣意的なクソ文法だよな。
ぜんぜん直感的じゃない。 >>765
一番外側が Rails なんだから
> js の文字列の中に Rails で生成した文字列入れる
ではなく
Rails の中に js の文字列を入れるだけだよ
<%= f.submit '送信', :class => 'button', :html => { :onsubmit => "return window.confirm('" + (t 'confirm') + "')"
ためしてないけどこれでいけるはず
ちなみに onclick つけたければ f.submit じゃなく form_for か form_tag のほうな なぜこんなに順位が落ちてるんだろう
パフォーマンスかねぇ?いい言語だと思うんだが 省略してこう書ける
こういう風にも書ける
みたいに書く分には好きなように書けるが読む人は全部知ってなきゃ読めないし書いた人違うと毎回別の言語みたいでチームだと採用しづらいんじゃない?
あと単なるエイリアスと、そう見せかけてちょっとだけ違う機能が乱立しすぎで混乱を招くとか。 https://www.benfrederickson.com/images/github/language-popularity/oldthing_u.svg
たしかに、Rubyは上昇のカーブが落ち着いた
Ruby on Rails は、一時期のバブルやフィーバと呼ばれた時代を乗り越えた
その一方で未だにペチパーと揶揄されるPHPの成長が著しいのも立派
ところで、今時はやってるとか言はれてる:
バイソンとかいうふのは、影も形も無い
おかしいなあ、一時期は Zope(>>2) とかRubyモドキの Django みたいな
フレームワークもあったのに、影も形も泣くランク外で彷徨ってるみたい
PHP あるいは Rails、その二強時代は、今後も安定して
続いていくってことなんだろなぁ >>786
https://www.benfrederickson.com/ranking-programming-languages-by-github-users/
の記事の一番上に出てるけどPythonはアクティブユーザー数Java抜いてJavascriptに次ぐ2番になったよ。
続いてC++、C、その次がPHP。
いくら英語が苦手だからってそのくらい見れば分かるでしょうに…
あとこれあくまでgithubのデータを解析した結果だからね。
大企業で組み込みとかやってる人はこんなところにカウントされることは稀だからCやC++は本当はもっとユーザー数いると思う。
Rubyはその、アレやけど… >>786
もちろん、汎用言語としてバイソンが急速に知名度を上げてるのは知ってるよ
とういうか、そもそも過去の TIOBEランキングにおいて、Rails フィーバーといふ
一時的なバブル現象はあったけど、Ruby はただの一度たりとも バイソン様を
越えたことなんてありませぬ
で、ここはム板ではなくWebProg板なんだけど、>>786は、それほど知名度が上がってる
バイソン様なのに、Webの世界ではあいも変わらず、天下の「GitHub様のデータ解析」によれば
ランク害を彷徨ってるといふのだから面白いなぁといふ、ただそれだけの話なんですよ
にもかかわらず、>>786のカキコからわずか30分あまりでバイソン様スゲーといふレスが
返るあたり、>>2 のトラウマもまた、健在といふことなんでしょうね いやぁ、たしかに>>487氏が指摘したように、プログラミング言語の
ランキングではJavaを抜いて2位に登り詰めたバイソン様ですら
Web界ではランク害を彷徨っているのに、Rubyは一時期のバブルが
弾けたとはいえ堂々と未だに2位と上位へランクインしてるわけです
>>2 を持ち出すまでもなく、Ruby がなかったら…とか、
どうして Python on Rails ではなかったのかとか、
>>487氏とそのお仲間達の心の声が響きますね 濁音と半濁音の区別がない言語を母語とする方ですかね >>786の画像は「Languages to Maybe Avoid」節の中のもので、
まずPHP、Ruby、Objective-C、CoffeeScript、Perlのアクティブユーザー*率*の減少ぶりを示した上で
その5言語のアクティブユーザー*数*を示したものだね
アクティブユーザー率の減少傾向を根拠に「避けるべき言語」にノミネートされたのが該当5言語で、
その中でRubyはPHPに次ぐアクティブユーザー数があると示したグラフであるに過ぎない
(しかし率だけじゃなく数も減ってんのかRuby...)
どうしようもなく英語が読めない人なのか、あるいはミスリードを試みているのかな? 掌田津耶乃が書いた、フレームワークの本。
他にもゲームエンジンでは、Unity, UE4 も書いてる
Spring Framework 4 プログラミング入門、2014
Spring Boot プログラミング入門、2016
Node.js超入門、2017
Python Django 超入門、2018
つまり、Railsが減って、Node.js, Go なども伸びている さすがにひとりのライターが書いた本だけで
判断するのは無理がある
ある程度の冊数で比較しないと ttps://pbs.twimg.com/media/DjCWzQYU4AAng_H.jpg 掌田津耶乃が書くようなフレームワークは、需要が伸びている分野
需要が伸びている分野では、出版される本の数も増える。
Unity, swift, go, python
JavaScript は、常に新本が出る >>797
いや、恐らくこれは氏に対する皮肉が多分に入っているぞ lang=enがいつの間にか日本語に戻るから修正してくれって言われたんだけど
Railsで書かれたシステムって勝手にPOSTやGETでパラメータが送られてるんだけど
どこに設定してあるのか全くわからん
書くのは楽だけど人の書いたコードが全く読めない
viewにもcontrollerにも一言もロケールっぽい変数出てこないのにどこで消えてるんだよ Railsで書かれたシステムを解読する時ってどういう順番で見ればいいの? 無料のRails チュートリアルで勉強すれば?
rails console で、環境変数を調べるとか?
OS の環境変数か、設定ファイルから読み込んでいるのかも?
1行ずつ、Rails のソースコードを読む必要はない。
大雑把に、どういう処理をしているか、コメントを読むだけで十分 >>800
それはRuby・Railsの問題じゃない。
それに気づかない時点で、Ruby・Rails以前の
基礎知識が足りてない いや普通は before action かいてヘルパーパスで勝手に伝わるから書く必要も読む必要もない
それがおこってる時点でわかってないやつが書いてるんだろうから探すのは大変だぞ
link_toで絶対パスをかいてるとか
まさか自分でリクエストトークン管理してたりしてないよな… じゃあどうやって勉強したらいいの?
1から作ったことはないけどいきなり Rails でかかれたシステムさわることになることってないの? Rails の form_for に複数のオプションをつける方法が毎回わからなくなります
url method confirm remote:true id class name
すべてつける場合どう書くのがいいのでしょうか
ブログあさっても複数指定してるものがそもそもあんまりなくて
data だったり html だったり : だったり => だったり書き方が違いすぎる ついでにいうとsimple_form使われてたりするとまた全然オプション違うので注意 >>811
無料のRails チュートリアルを読めば?
これだけで、環境構築・SQL・Linux コマンドなど、数十の技術を学べる。
LinuC など、これらを別々に勉強すれば、10年以上掛かる >>812
Viewヘルパー消えてほしい
HTMLで書けることをなんでRubyのコードに
しなくちゃいけないんだか。全然便利になっていない はじめてみたときどこに定義されてるかわからんかったわ
まさかメソッド名が勝手に作られてるなんて思わないし thタグとか書くのにわざわざ content_tag :thとかあほかよ >>817
それなw
俺、昔オレオレで作ったことあるんだが、
Viewヘルパーのようなものは作らないで、
ビューのHTMLに書いたメタ情報をパースして変換するようにしたよ
例えば、こんなRails混じりの何が生成されるのか
全く予想がつかないコードを書くぐらいなら
<%= form_for @data do |form| %>
<%= form.text_field :name %>
<%= form.submit %>
<% end %>
こんな感じでいいだろと
<form rails-form-for="@data">
<input type="text" rails-form-input=":name">
<input type='submit'>
</form>
コードは長くなるが、HTMLの知識をそのまま活かせる
HTMLをそのまま書いたものに、+αでRailsが解釈する属性を埋め込む
それを解釈して、HTMLタグを書き換える。
(うまく作れば)HTML Validで作ることも可能 Ruby 内で、JSX を使えるようにしろ!
JavaScript(JS) 内で、JSXは使えるし、
JSX内で、JSも使える
どちらの言語からも、乗り入れ可能なのが望ましい >>818
これの方が全然いいな。
なんであんなセンスないやり方放置してるんだ?互換性のためか?
新規は避けるだろあんなん ルビィスト(笑)はhtmlみたいな低級マークアップ言語には触れたくもないのだよ その驕りが衰退を招いたんだわ
WebはHTMLから離れては生きられないのよ 基礎から学ぶ Vue.js、mio、2018/5/29
Vue の本が出た bootstrap 使ってると長ったらしい同じクラスをつけた似たような記述が何回もでてきてレイアウトちょっとかえるだけであちこち書き換えないといけないから
<h2><%=label=></h2>
<p><%=contents%></p>
みたいなのをサブルーチン化してクラスかくのを1回ですませたいんだけど
ブロック複数わたせて複数回よべるようなサブルーチン化って Rails ではできないの?
def card(&block1, &block2)
とはかけないし
card.html.erbに
<h2><%= yield :head %></h2>
<p><%= yield %></p>
ってかいて
<%= render layout: ’card’ do %>
content_for :head do
…
end
…
end
だと複数回よぶと重複してくんだよね
結局ながったらしいクラス側を変数にして
@card_label_class=…
@card_content_class=…
<h2 class=“<%=@card_label_class%>”>…</h2>
<p class=“<%=card_content_class%>”>
でしのいでる…
きれいに管理する方法ってないの? ないよ
欠陥言語だし
つーか CSS でセレクタうまく使えばクラスつけなくてもスタイルは1元管理できるだろ bootstrap のクラスをあてないと
bootstrap ベースのテンプレートやテーマをあてるときに調整しなおしになる
本当は CSS セレクタで bootstrap のクラス名が指定できれば1番いいんだけどねー
CSS4 でそういうのサポートしてくれんかね SASSでどうかけばいいんですか?
SASSでできるのって結局 bootstrap のスタイルを上書きして展開するだけで
bootstrap のクラスをあてる
(あとからテーマやテンプレートをあてられる形にする)
って無理じゃない? ■ このスレッドは過去ログ倉庫に格納されています