我正在尝试实现一个无序的“类别”列表,其中如果您点击特定的类别,则属于该类别的所有照片(jags)都会显示在屏幕上。我的观点包括以下类别:
<div id = "Categories">
<h2>Categories</h2>
<ul><% @cat.each do |c| %>
<li><%=link_to c.name, c,:controller => "category", :action => "show" %>
</li>
<% end %>
</ul>
我的分类控制器是:
def show
@jags = Jag.where("category_id = params[:id]")
if @jags.empty?
flash[:notice] = "No jags in this Category"
end
end
最后我的节目观点是:
<%= render 'nav' %>
<div><% @jags.each do |j| %>
<%= image_tag j.image_url(:thumb)%>
<% end %>
</div>
我遇到的问题是我不知道如何将第一个视图中的“特定类别”(c)传递给类别控制器。
我试过把c变成一个实例变量(@c),显然我不能这样做[形式参数不能是实例变量 “); @ cat.each do | @c | ; @ output_buffer.safe_concat(']
如果我运行此代码,我会收到一个SQLlite错误[SQLite3 :: SQLException:near“[:id]”:语法错误:SELECT COUNT(*)FROM“jags”WHERE(category_id = params [:id])] 。
答案 0 :(得分:1)
如果您使用RESTful控制器,这应该足够了:
<div id = "Categories">
<h2>Categories</h2>
<ul>
<% @cat.each do |c| %>
<li><%=link_to c.name, c %></li>
<% end %>
</ul>
答案 1 :(得分:1)
看到你在控制器中获得了类别的ID,那么你可以做到
@category = Category.find params[:id]
在您的控制器中。另外,请按照以下方式清理link_to
帮助程序。