在控制器中的.each迭代中声明变量

时间:2019-05-12 23:48:42

标签: ruby-on-rails

我正在尝试为自引用关系创建一个方法,该方法需要在控制器方法中声明两个变量...

1)用户正在查看的当前记录[record = Record.find(params [:parent_id])]

2)正在从一条记录中选择一条记录。每次迭代都在主记录的“显示”页面上进行,如下所示...

  <% Record.find_each do |record| %>
    <div>
      <%= record.name %>
    </div>
    <%= form_for(@record.active_relationships.build) do |f| %>
      <div>
        <%= hidden_field_tag :parent_id, record.id %>
      </div>
      <%= f.submit "Follow" %>
    <% end %>
   <% end %>

如何像使用主记录(1)一样在控制器中将该记录声明为变量?

下面是到目前为止我在控制器中拥有的方法...

def create
        record = Record.find(params[:parent_id])
        record.follow(record)
        redirect_to record
    end

您会注意到第二行有两个记录实例。我遇到的问题是,我不确定如何定义记录的第二个实例以反映目标2。

1 个答案:

答案 0 :(得分:0)

通过分别向表单和控制器添加以下行,我能够将当前查看的记录定义为自引用关系中的子记录,从而允许在两个记录之间创建关系...

表格

<%= hidden_field_tag :child_id, @ingref.id %>

控制器

current_ingref = Ingref.find(params[:child_id])