polymorphic_path没有生成正确的路径

时间:2013-10-13 09:09:53

标签: ruby-on-rails routing polymorphic-associations

我正在尝试使用名为polymorphic_path的rails方法,但是我收到了错误的网址。 我的多态关联是学生和房东,他们都是可用的用户。

以下是我的模特:

class User < ActiveRecord::Base
  belongs_to :userable, polymorphic: true
end

class Student < ActiveRecord::Base
  has_one :user, :as => :userable
end

class Landlord < ActiveRecord::Base
  has_one :user, :as => :userable
end

我有一个名为current_user的变量,用于保存User对象。以下一行:

<%= link_to "Profile", polymorphic_path(current_user) %>

给我网址“users / 22”而不是返回学生/业主网址。

这是我的routes.rb文件,如果有帮助..

resources :users
resources :students
resources :landlords

我哪里错了? 谢谢!

2 个答案:

答案 0 :(得分:1)

好的,我懂了!解决方案非常明显......

<%= link_to "Profile", polymorphic_path(current_user.userable) %>
<%= link_to "Edit", edit_polymorphic_path(current_user.userable) %>

答案 1 :(得分:0)

嗯,不确定polymorphic_path是否应该以他们的方式工作你使用它,家庭酿造的替代品

# application_controller.rb    
helper_method :current_profile, :path_to_profile
def current_profile
   @current_profile ||= current_user.userable
end

def path_to_profile
   send("#{current_profile.class.downcase}_path", current_profile)
end

只需几行,您可以将其扩展为使用其他方法,而不仅仅是显示。