在Ruby on Rails中传递.each循环引用对象

时间:2015-07-14 15:40:58

标签: ruby-on-rails foreach

我正在使用ruby在rails上编写代码,我在表中创建动态行,涉及.each循环。我想传递.each循环引用对象,但它给了我一个错误。

以下是代码:

<% pworkflows.workflow_executions_list.each do |wf| %>
  <tr>
    <td><%= wf.execution_status %></td>
    <td>
      <% if(wf.start_timestamp != nil) %>
        <%= wf.start_timestamp.localtime; %> UTC
      <% end %>
    </td>
    <td><%= wf.close_status %></td>
    <td><%= wf.execution.run_id %></td>
    <td><%= button_to "Details",{ :controller => "pages", :action => "mainpage",:rulesetinstance=>rInsId, :ndetails=>wf} %></td>
  </tr>
<% end %>

:ndetails=>wf给出错误。 wf未被识别为要发送的正确语法。 请提出建议。

错误是:

undefined local variable or method `id' for #<ComRuleManagement::WorkflowExecutionObject:0x00003da1751528>

1 个答案:

答案 0 :(得分:0)

当你这样做时

<%= button_to "Details",{ :controller => "pages", :action => "mainpage",:rulesetinstance=>rInsId, :ndetails=>wf} %>

您正在构建一个html标记。 (因为button_to是一个html帮助器)。您传递的额外选项(在此实例中为“:rulesetinstance”和“:ndetails”)将用于在元素中创建额外属性,如rulesetinstance="123"。但是,如果你传递了wf对象,那么rails会调用它上面的to_s,你最终会得到类似于ndetails="#<Wf:0x7f518dfc6e68>"的东西。这几乎肯定不是你想要的html元素。你应该调用另一个wf对象的方法吗?