2013-10-13 5 views
0

Я пытаюсь использовать метод rails под названием polymorphic_path, но я получаю неправильный URL-адрес. Моя полиморфная ассоциация со студентами и арендодателями, которые являются пользователями через пользовательский интерфейс.polyorphic_path не генерирует правильный путь

Вот мои модели:

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 держит объект пользователя. Следующая строка:

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

дает мне ссылку "пользователи/22" вместо возвращения студента/Арендодатель URL.

Вот мой routes.rb файл, если это помогает ..

resources :users 
resources :students 
resources :landlords 

Где я буду неправильно? Спасибо!

ответ

0

Хорошо, я понял! И решение было болезненно очевидным ...

<%= link_to "Profile", polymorphic_path(current_user.userable) %> 
<%= link_to "Edit", edit_polymorphic_path(current_user.userable) %> 
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 

С несколько дополнительных линий Вы можете продлить его на работу с другими методами тоже не только шоу.

+0

Похоже, что самые элегантные из не элегантных решений ... Я просто подумал, что это то, что означало полиморфный_path. Спасибо за ответ, хотя. –

Смежные вопросы