【问题标题】:Rails, link_to, unable to pass on a valueRails,link_to,无法传递值
【发布时间】:2012-12-17 16:57:54
【问题描述】:

我正在尝试实现“类别”的无序列表,如果您单击特定类别,则属于该类别的所有照片(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 做 |@c| ;@output_buffer.safe_concat('].

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

【问题讨论】:

    标签: ruby-on-rails link-to


    【解决方案1】:

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

    <div id = "Categories">
    <h2>Categories</h2>
    <ul>
    <% @cat.each do |c| %>
        <li><%=link_to c.name, c  %></li>
    <% end %>
    </ul>
    

    【讨论】:

    • 我不明白。 link_to 如何知道应该将 c.name 链接到哪里?
    • 我们通过 c 这是 Category 对象
    • 有几件事我不明白,1. 它怎么知道它应该执行显示操作,2. 我如何传递 'c' 因为它不是实例变量
    • 我的例子有效吗?你现在应该知道的一切都在这里描述:guides.rubyonrails.org/…
    • 我收到此错误“未初始化的常量 CategoriesController”
    【解决方案2】:

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

    @category = Category.find params[:id]
    

    在您的控制器中。此外,请按照以下说明清理您的 link_to 助手。

    【讨论】:

      猜你喜欢
      • 2011-12-18
      • 2012-06-26
      • 2011-09-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-18
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多