« 土曜ドラマ「ウォーカーズ」 | トップページ | 理科年表公式サイトオープン »

学習RoR(7)

 ようやくできた。具体的に「そんなのこうすればいいじゃん」という情報に巡り合えなかったので、このデータはどうなっているのか? と地道に調べつつなんとか正しく動作するようになった。ということで記録のための以下。

  1. show ページにおいて、ひとつの item とそれに関わる複数の edition が表示されている。

  2. edition を追加するために add_edition リンクをクリックする。

  3. add_edition ページで edition_form に入力して保存する。

  4. 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アプリケーション開発
RailsによるアジャイルWebアプリケーション開発前田 修吾

おすすめ平均
starsもちろん満点です!!
starsRubyのすごさ
starsRails使い必携の本

Amazonで詳しく見る
by G-Tools

ビーケーワンで見る

(8)につづく

|
|

« 土曜ドラマ「ウォーカーズ」 | トップページ | 理科年表公式サイトオープン »

コメント

コメントを書く



(ウェブ上には掲載しません)




トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/28835/12867294

この記事へのトラックバック一覧です: 学習RoR(7):

« 土曜ドラマ「ウォーカーズ」 | トップページ | 理科年表公式サイトオープン »