我无法解决这个问题。我一直得到同样的错误:
(nil的未定义方法`id':NilClass):
这是我的application.html
<% @categories.each do |category| %>
<li><a><%= link_to 'category.title', category_cloth_path(@category)%></a></li>
<%end%>
cloths_controller.rb
def index
@cloths = Cloth.all
@categories = Category.all
end
def show
@cloths = Cloth.all
@categories = Category.where("category_id = ?", @category.id)
@comments = Comment.where("cloth_id = ?", @cloth.id)
@comments = Comment.paginate(:page => params[:page], :per_page => 3)
end
答案 0 :(得分:2)
尝试将@category
更改为category
:
<% @categories.each do |category| %>
<li><%= link_to category.title, category_cloth_path(category)%></li>
<%end%>
注意: link_to
会创建<a></a>
,因此您无需将<%= link_to %>
括在<a></a>
答案 1 :(得分:0)
您正在循环内为每个类别创建链接,因此您必须在链接标记内传递类别。
这可能对你有帮助......
<% @categories.each do |category| %>
<li><a><%= link_to 'category.title', category_cloth_path(category)%></a></li>
<%end%>
答案 2 :(得分:0)
使用
更新代码<% @categories.each do |category| %>
<li><a><%= link_to 'category.title', category_cloth_path(category)%></a></li>
<%end%>
def show
@cloths = Cloth.all
@categories = Category.find(params[:id])
@comments = Comment.where("cloth_id = ?", @cloth.id)
@comments = Comment.paginate(:page => params[:page], :per_page => 3)
end
答案 3 :(得分:0)
您正在使用锚标记(<a>
)以及(link_to)您将在链接中获得链接,请删除外部<a>
标记。
答案 4 :(得分:0)
您的Routes.erb一定有问题 如果问题(nil的未定义方法`id':NilClass):存在意味着你的category_cloth_path(@category)没有在路由中定义... 尝试输入routes.erb
Rails.application.routes.draw do
resources :cloth
member do
get 'category'
end
end
end