У меня есть модель для задачи, которая имеет имя, описание, процесс, которому она принадлежит, должность и категорию.
Поскольку существует только две разные категории, я создал дополнительные контроллеры, специфичные для этих категорий, поскольку к ним нужно относиться по-разному. когда я отправляю форму редактирования в один из контроллеров категории, он перенаправляет обратно к основным задачам, показывающим действие контроллеров. Кажется, что пропустить контроллер категорий все вместе (я проверил это, просто отображая текст на каждом этапе, он даже не касается действия обновления). Я посмотрел на вывод html, который отображается, и форма отправляется на неправильный контроллер, но я не вижу способа изменить это.
Так как настроить действие формы в рельсах?
Редактор контроллера подкатегории:
def edit
@task = Task.find(params[:id])
@procedures = Procedure.find(:all, :conditions => "comdecom = true")
@gettasks = Task.all
end
Это отредактирует представление категории:
<div id="page">
<h1>Editing Commissioning task</h1>
<%= render :partial => 'form' %>
<%= link_to 'Back', com_tasks_path %>
</div>
С частичной «формой»:
<div id="form">
<% form_for(@task) do |f| %>
<%= f.error_messages %>
<p>
<%= f.label :name %><br />
<%= f.text_field :name %>
</p>
<p>
<%= f.label :description %><br />
<%= f.text_area :description %>
</p>
<p> To format your text you can use either html or the redcloth textile markup language. A full list of commands can be found at <a href="http://redcloth.org/"> http://redcloth.org/ </a></p>
<p>
<%= swapselect :task, @task, :procedure, @procedures.map {|procedure|[procedure.name, procedure.id]} %>
</p>
<p>
<%= f.label :position, 'Position after:' %><br />
<%= f.collection_select "position", @gettasks, :position, :name %>
</p>
<p>
<%= f.hidden_field :comdecom, :value => '1' %>
<%= f.hidden_field :active, :value => '1' %>
</p>
<p>
<%= f.submit 'Submit' %>
</p>
<% end %>
</div>
Когда вы нажимаете кнопку отправки, вы переходите к контроллеру задач.