使用 breadcrumbs_on_rails gem 时出现 NoMethodError

NoMethodError while using breadcrumbs_on_rails gem

我正在尝试使用 gem breadcrumbs_on_rails。

我想在当前面包屑元素中使用我的车辆模型的名称属性,所以我使用符号作为面包屑元素,它调用在同一上下文中定义的相应方法并将元素属性设置为返回值(根据 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>

你能告诉我是什么导致了这个错误吗?谢谢

我在私有方法定义后附加 helper_method :set_vehicle_name 使其工作,如 this post.

中指定

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.

希望对您有所帮助