使用breadcrumbs_on_rails gem时的NoMethodError

时间:2016-03-25 22:02:35

标签: ruby-on-rails ruby breadcrumbs

我正在尝试使用gem breadcrumbs_on_rails。

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

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

1 个答案:

答案 0 :(得分:0)

我按照this帖子中的说明,在私有方法定义之后添加了helper_method :set_vehicle_name

  

gem使用ActionView :: Base(breadcrumbs.rb#L25)的上下文   评估任何方法(breadcrumbs.rb#L50)。它抱怨是因为   您还没有将控制器中的方法用于视图。

     

使用helper_method使其可用于您的视图,它将起作用。

希望它可以提供帮助