0

我正在尝试使用一个名为 polymorphic_path 的 rails 方法,但我得到了错误的 url。我的多态关联是与通过 userable 都是用户的学生和房东。

这是我的模型:

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) %>

给我 url "users/22" 而不是返回 Student/Landlord url。

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

resources :users
resources :students
resources :landlords

我哪里错了?谢谢!

4

2 回答 2

1

好,我知道了!解决方案非常明显......

<%= link_to "Profile", polymorphic_path(current_user.userable) %>
<%= link_to "Edit", edit_polymorphic_path(current_user.userable) %>
于 2013-10-13T12:46:18.100 回答
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

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

于 2013-10-13T09:33:27.777 回答