0

我正在尝试实现“类别”的无序列表,如果您单击特定类别,则属于该类别的所有照片(锯齿)都会显示在屏幕上。我的观点包括类别是:

<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 做 |@c| ;@output_buffer.safe_concat('].

如果我运行此代码,我会收到一个 SQLlite 错误 [SQLite3::SQLException: near "[:id]": syntax error: SELECT COUNT(*) FROM "jags" WHERE (category_id = params[:id])]。

4

2 回答 2

1

如果你使用 RESTful 控制器,这就足够了:

<div id = "Categories">
<h2>Categories</h2>
<ul>
<% @cat.each do |c| %>
    <li><%=link_to c.name, c  %></li>
<% end %>
</ul>
于 2012-12-17T17:01:58.863 回答
1

看到您在控制器中获取类别的 ID,那么您可以这样做

@category = Category.find params[:id]

在您的控制器中。link_to另外,按照下面的方法清理你的助手。

于 2012-12-17T17:02:12.907 回答