【RoR】Ruby on Rails Part20©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
ぼ、ぼ、ぼくは、お、お、おなにーが、す、すきなんだな、、 【毎年20万人、定住″】 なぜ移民が必要なのか? データだけであなたは強烈に思い知らされるだろう
http://rosie.5ch.net/test/read.cgi/liveplus/1529201770/l50
日本人が毎年30万人減ってるので、チャンコロをじゃんじゃん補充しまーす! プログラミングを誰でも習得できる方法は、「前場アキドルのプログラミングマスター方法」というブログで見られるらしいよ。ネットで調べると見られるらしいです。
QE3KN AirbnbがReact Nativeをやめたことに対する世間の反応 - Togetter
https://togetter.com/li/1239438 サーバーサイドはPHPでCGIが書ける程度で
RailsもRubyも入門サイトを1日読んで勉強した程度の初心者です
link_to t('xxx.yyy'), zzz, method: :delete, data: { confirm: t('xxx.yyy') } %>
で表示されるリンク先や文字列や処理ってどこに書かれているんでしょうか
当然ディレクトリ構成とかが違うので探しかたを教えて頂きたいです
viewに出力される HTML を吐く ruby が入ってて
controllerに変数設定や処理が書かれてるって程度の知識何ですが
controller内にそれらしい処理をする関数?はあるんですが
関数名とかが全く一致していなくて config/route.rb にもそれらしい記述が無くて
xxx.yyy が含まれるファイルを controller ディレクトリ内で検索しても出てこないんですよね…
どうやって view のリンクをクリックした時にコントローラーを呼び出してるのかよくわかりません
初歩的な質問で申し訳有りません そうですよね
レベルの低い質問をしてすいませんでした
ウェブアプリ書くならRailsがいちばん簡単って言われたんですが
どこまでが予約語でどこからがユーザ定義なのかもわからないし
どのファイルに何が書かれてるかがわからなくて
requireやinclude宣言もないし
Railsに手出すのは諦めます
スレ汚し失礼しました xxx.yyyで探しても出てくる訳ない罠
link_toで検索汁 いろんなスレで文脈ガン無視でRubyの宣伝してる糖質に騙されちゃったんだね、かわいそうに。
簡単だろうがなんだろうが、黎明期からRubyはドキュメント軽視。他の言語に差を空けられた原因のひとつでもある。
困って検索してもてきとーなやつらがてきとーにやったらたまたま解決できたというようなてきとーなメモ書きしか出てこないよ。 「ソースが仕様だソース読め」
分からないときにこれを実践できる人じゃないとRubyを使いこなすことは出来ないよ。
これは教祖様が言ってたことで取り下げてないから今でも有効、従ってRuby信者も反論できないRubyの真理だよ。
てきとーに書いたらなんか知らんけど動いたやったーって程度でいいなら別だろうけどね。 >>719
僕は英語が読めないんですってアピールしなくてもいいのに (Railsをさわったことがある人が1から動かすまでのアプリを作るのは)簡単
環境構築やさわり方覚えるまでのハードルが高すぎるんだよな
かといって大規模なシステムだとパフォーマンスぼろぼろだし
サーバーサイドJavaやPHPがかけるならRailsなんてて出さなくていいぞ >>718
ありがとうございます
おかげさまでlink_toだけはなんとかわかりました
これメソッドだったんですね
rubyは()なしでも2単語目以降が引く数のメソッド呼び出しになるんですね…
zzzというか2つめの引数にurlがはいってることまではなんとかわかりました
疑問なんですが自分で a タグ生成するのと何か違うんでしょうか
単に記述が短くなるように用意されてるってことでしょうか
タグ出力自動でやっちゃうと改行とかHTMLのインデントとかぐちゃぐちゃになりそう…
あと実際に生成されるHTMLのURLがrouteにかかれてなくて
このリンクをふんだら処理がどこにとぶのかがまたわからなくてつまってます
routeにマッチしてないのに404以外になるのってなんでなんでしょうか
configにも大量のファイルがあるのでどっかにもroute情報がかかれてるんでしょうか
エントリファイルからinckudeやrequireしてくれてたら追跡も楽なのに次にどのファイルよめばいいかがぜんぜんわからない
controllerのなかにそれらしい処理内容自体のメソッドがdefされてるんですが
viewのなかに1文字もそのメソッドがかかれてなくてどこから呼ばれてるんでしょうか >>722
パフォーマンスボロボロになるような規模のサイトなんてそんな数ないんだから気にしなくていいよ 「たのしいRuby 第5版、2016」を3回読んで、
無料のRails チュートリアルをやる
さすがに、Rails でも、勉強せずにはできない
Progate でも良い
puts a
p a
など、さすがに、これもやった事がない人には無理 view不要なアクションだけ追加するのってどうするの?
リンクをおすとajaxで送信だけしてDB更新するけど
もとの画面はペーj期遷移せずにajaxでメッセージだけ表示するみたいなことがやりたい ページ遷移なしで表示かえるってサーバーサイドでは無理
javascriptでDOMいじるしかないだろ 調べてみたけどメッセージ表示するだけでPushStateとかいらない
結局標示変更する部分はjQuery使ってるっぽいし何が違うかよくわからない
jQueryは分かるけどcoffeeとかかけないし
kinktoにremoteってかいてアクションを追加しなくてもjs側でサーバーへのリクエストを作ってくれるってこと? ダイアログでメッセージ表示するなら JavaScript を書くしかない
coffee 分からなかったら生 JS でも書ける >>731
coffeeはやめとけ。もう未来はない。
Railsユーザーの全員がいつ非推奨になるのか?って思ってる RailsとjQueryは組み合わせ方さえわかれば相性がいい
RailsにはTurbolinksという機能がある。PushStateとかTurbolinksの機能
重要な点をざっくりいうとAjaxを使い、ページ遷移しないということ
ということでページ遷移しないという前提でコードを書く必要がある。
何をしなければいけないかというと、サイトで使用するJavaScriptは最初に
全て読み込むということ。たとえ他のページで必要なコードだとしても。
JavaScriptはページ単位で作るのではなく、サイト単位で作る
そのために現在のページに要素が表示されていなくても、
そのためのコードを実行させる必要がある。これがjQueryと相性がいい
例えば $(document).on('click', '.hoge', function() {・・・}) と書くと
現在のページに .hoge が表示されてなくても、表示された時から使えるようになる
また $('.hoge').show(); とか書いた時 .hoge が無くてもエラーにはならない
jQueryは0個以上の要素に対して処理を一括で適用する。
その仕組みがページを遷移しなくても要素が増えたり減ったりする
Railsのデフォルト機能のTurbolinksに対応させるのに相性がいい
下手なやつが作ると、Turbolinksが提供するturbolinks:loadとかのイベントで
ごちゃごちゃやるハメになる 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 なども伸びている さすがにひとりのライターが書いた本だけで
判断するのは無理がある
ある程度の冊数で比較しないと ■ このスレッドは過去ログ倉庫に格納されています