2014-01-02 5 views
0

Я все еще новичок в рельсах, и я пытаюсь понять, как реализовать полиморфную ассоциацию, не используя вложенный маршрут или форму. Я пробовал искать, но все, казалось, было о вложениях форм или добавлении комментариев, чего я не пытаюсь сделать.Rails Полиморфные ассоциации без форм вложенности

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

Article.rb

class Article < ActiveRecord::Base 
    belongs_to :articable, polymorphic: true 
end 

Organization.rb

class Organization < ActiveRecord::Base 
    has_many :articles, as: :articable 
end 

People.rb

class People < ActiveRecord::Base 
    has_many :articles, as: :articable 
end 

Я хочу ввести ссылку «Новая статья» на странице «Организация» или «Люди» и ввести правильные article_id и article_type. Каким будет правильный синтаксис для создания этой ссылки?

Спасибо!

ответ

0

Маршруты:

resource :people do 
    resource :articles 
end 

resource :organizations do 
    resource :articles 
end 

ArticlesController:

def create 
    article = Article.new(params[:article]) 
    if params[:people_id] 
    people = People.find(params[:people_id]) 
    people.articles << article 
    else 
    organization = Organization.find(params[:organization_id]) 
    organization.articles << article 
    end 
    article.save 
end 

Организации посмотреть:

link_to new_organization_article_path(@organization)... 
+0

Это начинает больше смысла сейчас, спасибо. Я использовал ваш код, но теперь я получаю ошибку «динамическое постоянное присваивание» на строке 'Organization = Organization .find (params [: organization_id]). Есть идеи по этому поводу? В очередной раз благодарим за помощь. – Niko

+0

Да, я ошибочно назначил константу вместо переменной. проверьте последнее изменение. Несмотря на это, я не тестировал этот код, он должен был служить ориентиром для окончательного решения. –

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