プロが教えるわが家の防犯対策術!

RubyOnRailsのラジオボタン

遅まきながらRubyOnRailsを勉強中です。

スーパーの商品のカテゴリを登録する画面です。カテゴリをラジオボタンで選択します。
主要部分、以下のコードで動きます。
====
<% form_for(@item) do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :category_id %><br />
<label><%= f.radio_button "category_id",'1' %>野菜</lablel>
<label><%= f.radio_button "category_id",'2' %>魚</lablel>
<label><%= f.radio_button "category_id",'3' %>加工食品</lablel>
<label><%= f.radio_button "category_id",'4' %>グロッサリー</lablel>
</p>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
====
しかしこれは間違いです。理由はカテゴリテーブルがあり、そこから取得しなければなりません。
以下のように変更しました。
====
<% @categories = Category.find(:all) %>

<% form_for(@item) do |f| %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :category_id %><br />
<% for @category in @categories %>
<label><%= f.radio_button "category_id","@cateroy.id" %><%= @category.name %></label>
<% end %>
</p>
<p>
<%= f.submit 'Update' %>
</p>
<% end %>
====
つまりテーブルから読んで、その値でラジオボタンを表示しました。
結果、画面は表示されます。
しかしsubmitして、itemにcategory_idが設定されません。
お分かりの方、よろしくお願いします。

A 回答 (1件)

まだ私も、初心者ですが、修正後のように直してみてはどうでしょう?


似たような処理の記載が「RailsによるアジャイルWebアプリケーション開発/オーム社」書籍にあるので、それを真似しての変更です。

<修正前>
<% for @category in @categories %>
<label><%= f.radio_button "category_id","@cateroy.id" %><%= @category.name %></label>
<% end %>

<修正後>
<% for category in @categories %>
<label><%= f.radio_button :category_id,cateroy.id %><%= category.name %></label>
<% end %>
    • good
    • 0
この回答へのお礼

ありがとうございます。
お教えいただいた内容で正しく動作しました。
いろいろ試したはずなのですが、これは試してなかったのでしょう。
ただ原理はまだ良く分かっていないので、これから勉強します。
ともあれありがとうございました。

お礼日時:2009/06/07 11:51

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!