1

我的数据表数据:

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,我必须在 show 方法中再次查找它,对吗?像这样的路线看起来如何?我也在使用 devise 和 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 工作,我认为这是一个复数问题,所以尝试了细节,只是详细说明没有路径等。没有骰子。

4

1 回答 1

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.

有关该主题的更多信息,请参见此处:
Rails Routing Helpers (ie mymodel_path(model)) 可以在模型中使用吗?

于 2013-08-14T18:39:11.853 回答