doc*_*tus 6 ruby-on-rails ruby-on-rails-3
如果用户选择预定义的过滤器链接,我的索引将如何根据该请求显示结果?
<h1>Products</h1>
<% @products.each do |product| %>
<%= link_to product.name, product_path(product) %>
<% end %>
<h2>Find Product by Category</h2>
Electronics
Apparel
Books
Run Code Online (Sandbox Code Playgroud)
例如,如何制作"电子"链接以过滤产品索引,仅包含具有"电子"类别的产品?"类别"字段/列已在我的数据库/模型中定义.
这是我的控制器的样子:
def index
@products = Product.all
end
Run Code Online (Sandbox Code Playgroud)
谢谢.
trh*_*trh 13
使链接返回到产品的链接,但添加类别作为url参数.
然后在您的控制器中,如果参数存在,则根据它过滤结果.如:
视图:
<h2> Find Product by Category </h2>
<%= link_to "Electronics", products_path(:category=>"electronics")
Run Code Online (Sandbox Code Playgroud)
调节器
def index
if params[:category]
@products = Product.where(:category => params[:category])
else
@products = Product.all
end
end
Run Code Online (Sandbox Code Playgroud)
根据egyamado的评论:
如果你想添加flash消息,它将是这样的:
def index
if params[:category]
@products = Product.where(:category => params[:category])
flash[:notice] = "There are <b>#{@products.count}</b> in this category".html_safe
else
@products = Product.all
end
end
Run Code Online (Sandbox Code Playgroud)
如果您只想在没有产品时显示消息,则只需添加if @products.empty?到flash指定的末尾即可
或者,如果您想在没有产品的情况下显示错误消息并且有通知是否有产品,则可以使其完全有条件
def index
if params[:category]
@products = Product.where(:category => params[:category])
if @products.empty?
flash[:error] = "There are <b>#{@products.count}</b> in this category".html_safe
else
flash[:notice] = "There are <b>${@products.count}</b> in this category".html_safe
end
else
@products = Product.all
end
end
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4317 次 |
| 最近记录: |