如何通过验证/处理参数在RUBY视图
问题描述:
我有一个很大的疑问,我接受提示,如果他们看到更好的选择做我想做的事。我有一个链接到两个项目相同的看法>>如何通过验证/处理参数在RUBY视图
<ul class="nav nav-second-level">
<li>
<%= link_to backoffice_pedidos_path do %>
Abertos
<% end %>
</li>
<li>
<%= link_to backoffice_pedidos_path do %>
Finalizados
<% end %>
</li>
</ul>
我希望在视图来治疗我的选择的内容,如果点击“Abertos”的布局,它加载指数与部分_abertos和如果点击“Finalizados”,它会加载索引,但会加载另一个部分_finalizados。有没有办法在link_to中传递一些参数,以便在视图中我可以处理它以发送到正确的部分?或者如何留下任何提示?
索引>>
<thead>
<tr>
<th>Pedido</th>
<th>Status</th>
<th>Data/Hora </th>
<th>Produtos </th>
<th> </th>
</tr>
</thead>
<tbody>
<% if ??
<%= render partial: "backoffice/pedidos/abertos" %>
else ??
<%= render partial: "backoffice/pedidos/finalizados" %>
<% end %>
</tbody>
局部abertos >>
<% @pedidos_aguardando.each do |pedido| %>
<tr>
<td><%=pedido.id%></td>
<td><%=pedido.status%></td>
<td><%=pedido.created_at%></td>
<!--<th><%=pedido.produtos.first.produto %></th>-->
<td><%=pedido.produtos.pluck (:produto)%></td>
<td width="50px">
<%= link_to edit_backoffice_pedido_path(pedido), class:"btn btn-primary btn-circle" do %>
<i class="fa fa-edit"></i>
<% end %>
</td>
</tr>
<% end %>
局部模板fechados
<% @pedidos_finalizados.each do |pedido| %>
<tr>
<td><%=pedido.id%></td>
<td><%=pedido.status%></td>
<td><%=pedido.created_at%></td>
<!--<th><%=pedido.produtos.first.produto %></th>-->
<td><%=pedido.produtos.pluck (:produto)%></td>
<td width="50px">
<%= link_to edit_backoffice_pedido_path(pedido), class:"btn btn-primary btn-circle" do %>
<i class="fa fa-edit"></i>
<% end %>
</td>
</tr>
<% end %>
控制器
def index
@pedidos_aguardando = Pedido.waiting
@pedidos_finalizados = Pedido.ok
end
型号
class Pedido < ActiveRecord::Base
has_many :produtos
scope :waiting, -> { where(status: 1) }
scope :ok, -> { where(status: 2) }
end
我接受建议,并感谢您!
答
可以传递一个自定义的参数到link_to
并使用PARAM在索引视图加载泛音相应
<%= link_to backoffice_pedidos_path(flag: "abertos") do %>
Abertos
<% end %>
<%= link_to backoffice_pedidos_path(flag: "finalizados") do %>
Finalizados
<% end %>
而在索引视图中,使用params[:flag]
像这样
<% if params[:flag] == "abertos" %>
<%= render partial: "backoffice/pedidos/abertos" %>
<% elsif params[:flag] == "finalizados" %>
<%= render partial: "backoffice/pedidos/finalizados" %>
<% end %>
我需要在控制器上做其他事吗?因为那只是不起作用=(它没有渲染部分,条件不起作用=(Tks –
不,不,不,不,忘记我说的,它的工作,非常感谢你!) –
另一个问题,会这种用法是遵循RoR最佳实践的最佳方法吗?还是有另一种“正确”的方式来做到这一点? –