找出rails路由,为我的detail_path获取未定义的方法

时间:2013-08-14 18:13:19

标签: ruby ruby-on-rails-3.2 routes

我的数据表数据:

def data
    theusers.map do |usermap|
      [
        h(usersmap.spriden_last_name),
        h(usermap.spriden_first_name),
        h(usermap.spriden_id),
        link_to(usermap.gobtpac_username, detail_path(usermap.spriden_id))
      ]
    end
end

以上代码位于app\datatables\helpdesk_datatable.rb

上面的工作主要是我知道它是获取数据,我得到的错误是detail_path

Error on "undefined method" for detail_path...这意味着它没有动态构建路由器,对吗?

或者我传递了错误的东西,我试图在usermap.spriden.id中传递,只是横幅用户,同样的问题。我真的不确定路线是如何工作的。我在控制器中有一个details_controller.rb,其中有一个show方法,我有views / details / show.html.erb,它将显示传递给路径的数据,至少我认为。但它只是一个ID还是一个对象?所以如果它只是一个id我必须再次查找它 秀方法对吗?这样的路线怎么样?我正在使用设计和cancan这里是我的路线文件:

NmsuMyaccount::Application.routes.draw do
 authenticated :user do
   root :to => 'home#index'
   match 'home', :to => 'home#index', :via => :get 
 end


 #get 'show-details' => "details#show", as: 'show_details'

 resources :details
 devise_for :users
 resources :users
 # In order for an unauthorized user access this controller#action, this needs to be in  a scope, but I don't know why.
 devise_scope :user do
   match 'home', :to => 'home#index', :via => :get
 end

end

同样命中端点localhost:3000是一个错误,我必须转到/ home,虽然设计工作得很好。所以我认为我很接近但是因为我的生活无法使detail_path工作,我认为这是一个复数问题所以尝试过的细节,只是细节没有路径等没有骰子。

1 个答案:

答案 0 :(得分:1)

我不相信您可以访问Rails在自定义类中提供的路由助手。因此,您必须在类中手动包含该模块。类似的东西:

link_to(usermap.gobtpac_username, Rails.application.routes.url_helpers.detail_path(usermap.spriden_id))

或者:

include Rails.application.routes.url_helpers
# Use it like you are using.

有关该主题的更多信息,请参见此处:
Can Rails Routing Helpers (i.e. mymodel_path(model)) be Used in Models?