2016-04-18 32 views
2

この問題を解決するには問題があります。ここに私のapplication.htmlをNoMethodError in Cloths#index

(undefined method `id' for nil:NilClass):

<% @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

エラーが発生している行を明確にすることはできますか? –

+0

  • <%= link_to 'category.title'、category_cloth_path(@ category)%>
  • この行。それはカテゴリidを定義しません。 –

    答えて

    0

    問題(nilのための未定義のメソッド `ID」:NilClass)は次の場合にあなたのRoutes.erb に問題がなければならないことが 入れてみてください...ルートに定義されていませんあなたのcategory_cloth_path(@category)を意味存在in.bin

    Rails.application.routes.draw do  
    resources :cloth 
        member do 
         get 'category' 
        end 
        end 
    end 
    
    0

    あなたは、各カテゴリのループ内のリンクを作成しているので、あなたが持っている必要があります:私は同じエラーを取得しておきますリンクタグ内のカテゴリを渡す。これはあなたを助けるかもしれない

    ...

    <% @categories.each do |category| %> 
    <li><a><%= link_to 'category.title', category_cloth_path(category)%></a></li> 
    <%end%> 
    
    2

    変更してみてください@categorycategoryへ:

    <% @categories.each do |category| %> 
        <li><%= link_to category.title, category_cloth_path(category)%></li> 
    <%end%> 
    

    注:<a></a>

    <%= link_to %>を囲む必要はありませんので、 link_toは、 <a></a>を作成し、
    0

    アップあなたは、リンク内のリンクを取得しますアンカータグ(<a>)とも(のlink_to)を使用している

    <% @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 
    
    0

    とデートあなたのコードは、外側の<a>タグを削除してください。