2016-09-12 8 views
0

私は、ユーザーが別の石のショーページへのリンクをクリックできるナビゲーションバーにドロップダウンを入れようとしています。私が今使っているコードでは、NoMethodErrorのプライベートメソッド `nil 'が呼び出されています:NilClass。Rails:表示ページへのリンクを含むドロップダウン

私は石のモデルではなく、その後の私application.html.erbである私のナビゲーションバーにこのコードを入れていますので、このプライベートメソッドエラーが間近に迫っているかなり確信しています。誰かが、Navbarのメソッドをどこに定義するべきか、私に正しい方向を教えてもらえますか?それとも何か他に何かがあれば、私は代わりにやっているはずですか?あなたは上のVAR @stones.eachを呼び出すとされていません

application.html.erb

<div class="dropdown"> 
    <button class="btn btn-primary dropdown-toggle" type="button" data-toggle="dropdown">Dropdown Example 
    <span class="caret"></span></button> 
    <ul class="dropdown-menu"> 
    <% @stones.each do |stone| %> 
    <li> <%= link_to stone_url do %> 
    <%= stone.name %> 
    <% end %> 
    </li> 
    <% end %> 
    </ul> 
</div> 

application_controller.rb

class ApplicationController < ActionController::Base 
    # Prevent CSRF attacks by raising an exception. 
    # For APIs, you may want to use :null_session instead. 
    protect_from_forgery with: :exception 
    helper_method :current_order 
    def each 
    @product = Product.all 
    end 
    def current_order 
    if !session[:order_id].nil? 
     Order.find(session[:order_id]) 
    else 
     Order.new 
    end 
    end 
end 

答えて

0

を:ここで

は、私がこれまで試みられてきたものですあなたのコントローラは、ヘルパーメソッドでない限り、コントローラからのコールメソッドを表示しません。あなたの@stonesを設定し、ちょうどStone.all.each@stones.eachを置き換えるコントローラ

+0

私はapplication_controllerまたはstone_controllerにbefore_filterを入れますか? – Kris

+0

アプリケーション全体でこのナビゲーショントラフを使用している場合は、そのためにapplication_controllerを使用する必要があります – antpaw

0

からそのeachメソッドを削除します、あなたのコントローラでbefore_filterを使用するようにしてください。

var @stonesを使用するため、application_controller.rb@stonesを定義しないでください。

関連する問題