在带参数的方法中查看?

时间:2014-08-04 19:04:36

标签: ruby-on-rails

我有一个带有一些字段的表单,一个处理此表单数据的控制器和一个显示结果的视图。

在控制器中,我有一个方法

def formsent
   @a = param[:a_field]
   @b = param[:b_field]
   @c = param[:c_field]
   @d = {aze => "something" ... }
end

查看:

<table>
<tr>
<th><%= @a %></th>
<th><%= @b %></th>
<th><%= @c %></th>
</tr>
<% @d.each do |k,v| %>
<tr>
<th><%= k %></th>
<th><%= v %></th>
<th>Something</th>
</tr>
<% end %>
</table>

它是什么......但仅仅是原则。

现在我想用两个不同的字段显示两次视图。 因为我想比较数据。

RoR说:不要重复自己,我不知道如何处理相同的formsent,但在一个字段中具有不同的值。 (我将有两种相同的形式)

问题:如何使用不同的值显示相同的视图? (不重复自己) 值可以是字符串,整数,散列或数组。

可能不清楚,我很抱歉。

谢谢。

1 个答案:

答案 0 :(得分:4)

How to show the same view with different values ? (without repeat myself) The values can be string, integer, hash or array.

创建一个包含代码的部分名称_sample.html.erb

<table>
  <tr>
    <th><%= a %></th>
    <th><%= b %></th>
    <th><%= c %></th>
  </tr>
  <% d.each do |k,v| %>
    <tr>
      <th><%= k %></th>
      <th><%= v %></th>
      <th>Something</th>
    </tr>
  <% end %>
</table>

现在在你的视图中调用此部分两次传递不同的本地,如:

<%= render partial: "sample", locals: {a: v1, b: v2, c: v3, d: v4} %>  // where v1,v2,v3,v4 are instance variables set in controller

<%= render partial: "sample", locals: {a: v5, b: v6, c: v7, d: v8} %>   // where v5,v6,v7,v8 are instance variables set in controller