为什么simple_form用所有的comment_title填充这些选择列表?



所以我有这个表单来生成comment_titles:

<%= simple_form_for @video, :remote => true do |f| %>
    <%= f.input :comment_title_names, :label => false, :placeholder => "Add a Comments Title" %>
    <%= f.button :submit, :value => 'Add', :id => 'add_comment_title' %>
    <div class='hint'>Let your listeners know what comments you want by adding a guiding title for them. Pose a question, ask for feedback, or anything else!</div>
<% end %>

这是我的视频模型的相关部分,它允许将comment_titles创建为虚拟属性:

attr_accessor :comment_title_names
after_save :assign_comment_titles
def assign_comment_titles
  if @comment_title_names
    self.comment_titles << @comment_title_names.map do |title|
      CommentTitle.find_or_create_by_title(title)
    end
  end
end

下面是生成注释的表单,用户必须选择所需的comment_title:

<%= simple_form_for([@video, @video.comments.new]) do |f| %>
  <%= f.association :comment_title, :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, :label => "Comment Title:", :include_blank => false %>生成的comment_title选择列表似乎填充每个视频的每个列表,其中包含已添加到所有视频的所有评论标题,而不是仅填充已添加到该特定视频的comment_title。为什么会这样,我该如何解决?

也许你想要这样的东西?

f.association :comment_title, :collection => @video.comment_titles, ...

默认情况下simple_form不使用关联作用域。查看它的工作原理:https://github.com/plataformatec/simple_form/blob/master/lib/simple_form/form_builder.rb#L130

传递关联的收集选项,如下所示:

f.association :comment_title, :collection => @video.comment_titles, ...

相关内容

  • 没有找到相关文章

最新更新