2011-11-08 4 views
1

私はコメントと投稿を持っています。投稿はhas_manyコメントとコメントbelong_to投稿です。選択のためのRailsのデフォルト値が設定されていませんか?

管理者インターフェースには、コメントが属する投稿を選択するためのドロップダウンメニューがあります。それが自動的に@comment.post_idをデフォルトとすべき文書で述べているにもかかわらず、

<%= form_for @comment do |f| %> 
<p> 
    <%= f.label :text, "Comment Text" %><br /> 
    <%= f.text_field :text %> 
</p> 

<p> 
    <%= f.label "Post" %><br /> 
    <%= f.select(:post_id, options_from_collection_for_select(Post.all, :id, :title), :include_blank => true) %> 
</p> 

<p> 
    <%= f.submit "Update" %> 
</p> 

しかし、selectタグのデフォルト値が選択されていない。ここで

はコードです。なぜこのようなことは起こっていないのでしょうか?

+0

それがあるべき'belongs_to'です。それはタイプミスですか? – fuzzyalej

+0

発行されるHTMLとは何ですか? – tadman

答えて

3

options_from_collection_for_selectの代わりに2番目のオブジェクトとして配列を渡すだけの場合、Railsは自動的に@comment.post_idを使用します。ここにはrelevant documentationがあります。だから、あなたはこれをしなかった場合、それが正常に動作します:

<%= f.select(:post_id, 
      Post.all.collect {|p| [p.title, p.id] }, 
      :include_blank => true) %> 

あなたはoptions_from_collection_for_selectに固執する場合は、あなたが選択した値として使用するためにどのような値にそれを伝える必要があります:

<%= f.select(:post_id, 
      options_from_collection_for_select(Post.all, :id, :title, @comment.post_id), 
      :include_blank => true) %> 
関連する問題