2016-06-28 4 views
0

У меня есть контроллер рекламодателей и контроллер экспериментов. В assocaitions следующиеДоступ к переменным от контроллера к следующему

class Advertiser < ActiveRecord::Base 
    has_many :experiments 
end 

class Experiment < ActiveRecord::Base 
    belongs_to :advertiser 
end 

Когда я создаю эксперимент advertisers_id передается к нему и все, кажется, работает хорошо. Как я могу получить доступ к экспериментам (для конкретного рекламодателя) на странице показа рекламодателей?

Так что, если я на http://localhost:3000/advertisers/5/ Я хотел бы, чтобы отобразить список экспериментов для рекламодателя с идентификатором 5

ответ

1

Что вам нужно сделать, это создать вложенный ресурс, посмотрите здесь: http://guides.rubyonrails.org/routing.html#nested-resources.

Ваших маршруты будут:

resources :advertisers do 
    resources :experiments 
end 

И вы можете получить доступ экспериментов для данного рекламодателя со следующим маршрутом: http://localhost:3000/advertisers/5/experiments И в этом маршруте вы должны принести эксперименты для данного рекламодателя, так что вы имеете для возврата:

Advertiser.find(params[:id]).experiments 
+0

У меня была установка вложенных ресурсов. Не уверен, что это лучший способ, но в моем контроллере для рекламодателей я добавил следующее частное действие. 'def find_experiments @advertiser = Advertiser.find (params [: id]). Tests end' Тогда я вызываю before_action: find_experiments Просто не уверен, как получить эксперименты. –

+0

Ничего, я понял это =) –

+0

Дерьмо, я говорил слишком рано. У меня это есть у моих рекламодателей show.html.erb '<% @ advertiser.experiments.each do | experimental | %> '' <% = @ advertiser.experiments.name%> '' <% end %> ' Однако, это просто выплевывает ** # <Эксперимент :: ActiveRecord_Associations_CollectionProxy: 0x8920c50> \t ** Я не могу эксперименты доступа. experiment_type или любое другое значение –

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