2016-03-25 4 views
0

私はbreadcrumbs_on_railsを使用しようとしています。breadcrumbs_on_rails gemを使用中のNoMethodError

現在のbreadcrumbs要素で自分の車両モデルのname属性を使用したいので、同じコンテキストで定義されている対応するメソッドを呼び出し、戻り値にElement属性を設定するBreadcrumb要素としてSymbolを使用します。値(gem documentation)。

#vehicles_controller.rb 
    def show 
    @vehicle = Vehicle.find(params[:id]) 
    @user = User.find(params[:user_id]) 
    add_breadcrumb "home", :root_path 
    add_breadcrumb "user profile", :current_user 
    add_breadcrumb :set_vehicle_name, :user_vehicle_path 
    end 

    ... 

    private 

    #return vehicle name for breadcrumb 
    def set_vehicle_name 
     @vehicle.name 
    end 

私の見解は以下の通りです:

#vehicles/show.html..erb 
<ol class="breadcrumb"> 
    <%= render_breadcrumbs :separator => "/" %> 
</ol> 

私は、サーバーを実行して、ページにアクセスすると、私は次のエラーを取得する:

NoMethodError in Vehicles#show 
undefined method `set_vehicle_name' for #<#<Class:0x007f40edd52958>:0x007f40f18fe790> 

あなたは、このエラーの原因となっているものを教えてもらえます?ありがとう

+0

'set_vehicle_name'はプライベートメソッドで役立つかもしれない願っています。それを 'protected'または' public'にします。 – archana

+0

公開すると物事が変わらない – davideghz

答えて

0

this投稿に指定されているプラ​​イベートメソッドの定義の後に、helper_method :set_vehicle_nameの後に追加して機能させました。

The gem uses the context of an ActionView::Base (breadcrumbs.rb#L25) to evaluate any methods (breadcrumbs.rb#L50). It's complaining because you haven't made your method in your controller available to the view.

Use helper_method to make it available to your views and it will work.

は、それが

関連する問題