rails, передайте аргументы при установке нового объекта - PullRequest
1 голос
/ 03 октября 2010

Можно ли в rails передавать аргументы при создании нового объекта и устанавливать соответствующие значения соответственно?

Например, если у меня есть экран со списком элементов и ссылка для созданияновый предмет наверху.Если бы я поместил раскрывающийся список «типов элементов» рядом с «новой» ссылкой, как бы я передал это значение новой функции на контроллере элементов и установил бы его @ item.item_type?


Изменить после ответа от JC ниже

Если в контроллере у меня есть следующее:

@entry = Entry.new

if (params[:type])
  @entry.entry_type = params[:type]
end

И ссылка для создания нового объекта:

<%= link_to "Make new article", {:controller => '/dashboard/entries', :action => :new}, :type => 1 %>

тогда не должно ли поле entry_type в форме new.html.erb быть установлено в 1?

1 Ответ

3 голосов
/ 03 октября 2010

То, что вы описываете, - это просто стандартная форма для действия контроллера new и соответствующее действие create для получения данных формы и создания объекта. Вы можете сгенерировать файлы scaffold, чтобы увидеть пример того, как это работает, но в двух словах, это так (при условии, что RESTful дизайн):

# new.html.erb
<% form_for @item || Item.new do |f| %>
  <%= f.select :type, { 'type1' => 1, 'type2' => 2 } %>
  <%= f.submit %>
<% end %>

# ItemsController#create
@item = Item.new(params[:item])
if @item.save
  redirect_to @item
else
  render :new
end

Данные из вашей формы доступны в хеше params в контроллере и используются для инициализации нового объекта.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...