学習RoR(7)
ようやくできた。具体的に「そんなのこうすればいいじゃん」という情報に巡り合えなかったので、このデータはどうなっているのか? と地道に調べつつなんとか正しく動作するようになった。ということで記録のための以下。
- show ページにおいて、ひとつの item とそれに関わる複数の edition が表示されている。
- edition を追加するために add_edition リンクをクリックする。
- add_edition ページで edition_form に入力して保存する。
- show ページに戻り、追加した edition を含めて表示される。
といった処理をしたかった。
2 において、link_to 'add_edition', :action => 'add_edition', :item_id => @item.id などとしていたわけだけれど、この item の id をどう処理すべきなのかがよくわからなかった。通常の新規で追加するのであれば、その id は指定する必要が無いので、link_to 'add_edition', :action => 'add_edition' だけでよいわけで、編集であれば id を指定したいのでさらに :id => @item.id などと付け加えることになる。
ただ、追加する edition は新規であって、それが属する item が既に存在するために、その item_id を指定しておきたいということなので、さて、そういうパターンについては見たことがないな、というところに入ってしまっていた。 rhtml 内で記述するべきなのか、 controller で記述すべきなのかとあれこれ試行錯誤するもうまくいかない。いや、こうしたパラメータの受け渡しの基本を知らないからということなのだろうな、と思ったのでいくつかウェブを探してみたのだが、どうも見つからない。
で、とにもかくにも実際表示させてみようとやっているうちにようやくわかった。ということで次のようにやってみた。
show ページでのリンクの記述は当初のまま、
<%= link_to 'add_edition', :action => 'add_edition', :item_id => @item.id %>
add_edition ページに以下を追加、
<%= hidden_field :edition, :item_id, :value => "#{params[:item_id]}"%>
(はじめ :value => "#{item_id}" などとしていて、どうにもうまくいかなかった。)
controller のアクションは新規作成とほぼ同様。
これで個々の edition の追加・削除ができるようになった。あー、長い道のりだった。ということで一回休んで次に進む。
やっぱり買っておくべきかなあ。
RailsによるアジャイルWebアプリケーション開発 | |
![]() | 前田 修吾 おすすめ平均 ![]() ![]() ![]() ![]() Amazonで詳しく見る by G-Tools |
【 ビーケーワンで見る 】
| 固定リンク
コメント