Rails значение по умолчанию для выбора не устанавливается? - PullRequest
1 голос
/ 08 ноября 2011

У меня есть комментарий и сообщение, где сообщение has_many Комментарии и комментарий belong_to сообщение.

В интерфейсе администратора у меня есть выпадающее меню для выбора, к какому сообщению относится комментарий.to.

Вот код:

<%= 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.Есть идеи, почему этого не происходит?

1 Ответ

3 голосов
/ 09 ноября 2011

Rails будет автоматически использовать @comment.post_id, только если вы просто передадите массив в качестве второго объекта вместо options_from_collection_for_select.Вот соответствующая документация .Поэтому, если вы это сделаете, все будет работать нормально:

<%= 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) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...