Rails,link_to,无法传递值

时间:2012-12-17 16:57:54

标签: ruby-on-rails link-to

我正在尝试实现一个无序的“类别”列表,其中如果您点击特定的类别,则属于该类别的所有照片(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])] 。

2 个答案:

答案 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帮助程序。