为什么这个simple_form会找到一个对象的错误记录?

时间:2015-03-18 07:04:18

标签: ruby-on-rails ruby-on-rails-4 simple-form

我有一个Node对象,我试图在模态中更新。

这是模式中用于屠杀对象的simple_form:

# shared/_tag_icon.html.erb

<%= simple_form_for node, url: add_tagged_user_node_path(node), method: :post do |f| %>
  <div class="form-inputs">
    <%= f.association :user, label: "Users", collection: @users, as: :check_boxes, checked: node.user_tags %>
  </div>                            

  <div class="form-actions">
        <%= f.button :submit %>
  </div>
<% end %>

这是从shared/_box.html.erb部分:

呈现的
<%= render partial: "shared/tag_icon", locals: { node: node } %>

本身正在Dashboard#Index视图的循环中呈现:

<% @nodes.each do |node| %>
  <div class="box">
     <%= render partial: "shared/box", locals: {node: node} %>
  </div>
<% end %> <!-- node -->

这是我的Dashboard#Index控制器操作的截断版本:

  def index
    @nodes = @family_tree.nodes.includes([:comments => :user], :media, :node_comments, :user, :user_tags)
    tagged_nodes = Node.tagged_with(current_user.email)    

    if !tagged_nodes.empty?
      tags = tagged_nodes.collect do |node|
        node.user_tags
      end
      tags.flatten!

      @tagged_users = tags.collect do |tag|
        User.find_by email: tag.name
      end
      @tagged_users.reject!(&:blank?)
    end        
  end

我不认为该控制器的后半部分是相关的,但鉴于它确实与某些node个对象进行了交互,我将其包含在内是为了安全。

我遇到的问题是无论我尝试标记哪个节点(即执行该模式/ simple_form),它总是生成最新节点 - 即最近上传的节点,而不是传入的节点通过部分)。

我一路上添加了调试语句,当视频呈现在Dashboard/Index上时,它正确地完成了。只有一次点击simple_form,一切都会出错。

修改1

我甚至尝试将shared/_tag_icon部分的原始渲染部分移动到Dashboard#Index视图,并且我仍然在该节点上的该模式中获得了错误的值。

0 个答案:

没有答案