2011-11-08 65 views
1

我有一个评论和一个职位,其中邮政has_many评论和评论belong_to邮政。未设置select的Rails默认值?

在管理界面中,我有一个下拉菜单,用于选择评论所属的帖子。

下面是代码:

<%= 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> 

但是,没有被选中的选择标签默认值,即使它的文档应该自动默认为@comment.post_id中说。任何想法为什么没有发生?

+0

它应该是'belongs_to'。这是一个错字吗? – fuzzyalej

+0

什么是发射的HTML? – tadman

回答

3

如果您只是将数组作为第二个对象而不是使用options_from_collection_for_select,则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) %>