我有这个表单使用simple_form插件:
<%= simple_form_for([@video, @video.comments.new], :remote => true) do |f| %>
<%= f.association :comment_title, :collection => @video.comment_titles, :label => "Comment Title:", :include_blank => false %>
<%= f.input :body, :label => false, :placeholder => "Post a comment." %>
<%= f.button :submit, :value => "Post" %>
<% end %>
创建一个下拉列表,如下所示:
<%= f.association :comment_title, :collection => @video.comment_titles, :label => "Comment Title:", :include_blank => false %>
我的问题是如何修改这段代码,使每个下拉项都是每个comment_title
的单独显示视图的链接?
下面是由第一个答案生成的html代码:
<select class="select optional" id="comment_comment_title_id" name="comment[comment_title_id]">
<option value="<a href=" comment_titles="" 224"="">#<CommentTitle:0x10353b890>">#<CommentTitle:0x10353b890></option>
<option value="<a href=" comment_titles="" 225"="">#<CommentTitle:0x1035296e0>">#<CommentTitle:0x1035296e0></option>
<option value="<a href=" comment_titles="" 226"="">#<CommentTitle:0x1035295a0>">#<CommentTitle:0x1035295a0></option>
</select>
我真的弄明白了。下面是ruby代码:
<%= f.association :comment_title, :collection => @video.comment_titles.map {|ct| [ct.title, comment_title_path(ct)] }, :label => "Comment Title:", :include_blank => false %>
传递数组中的第一个元素作为文本,第二个元素作为值。然后使用以下jQuery代码:
$("select").change(function () {
var url = $("select option:selected").val();
$(location).attr("href",url);
});
相当简单。
try :collection => @video.comment_titles.map {|ct| [ct, (link_to ct, comment_title_path(ct))] }