Я предполагаю, что у вас есть модель журнала, в которой много статей, и модель статьи, которая принадлежит журналу. Во-первых, вы должны создать маршруты к контроллеру статей, которые проходят через журналы, а не через журналы:
ActionController::Routing::Routes.draw do |map|
map.resources :journals, :has_many => :articles
map.resources :articles
end
Теперь вы можете перейти к новому действию вашего контроллера статей с помощью URL /articles/new
или /journals/1/articles/new
. Затем в новом действии в вашем контроллере статей вы делаете это:
@article = Article.new(:journal_id => params[:journal_id])
Который устанавливает для journal_id
статьи любой передаваемый параметр. Если параметр не передан, journal_id будет равен nil.
В шаблоне ERB вы просто делаете это, чтобы создать раскрывающийся список:
<%= f.collection_select :journal_id, Journal.all(:order => "name"), :id, :name, :include_blank => true %>
И затем пользователь может выбрать журнал, но если он был передан, он будет предварительно выбран с правильным значением.