我正在尝试使用名为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
我哪里错了? 谢谢!
答案 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
只需几行,您可以将其扩展为使用其他方法,而不仅仅是显示。