обновление рельсов, перенаправляющее на неправильный контроллер - PullRequest
0 голосов
/ 12 октября 2010

У меня есть модель для задачи, которая имеет имя, описание, процесс, которому она принадлежит, должность и категорию.

Поскольку существует только две разные категории, я создал дополнительные контроллеры, специфичные для этих категорий, поскольку к ним нужно относиться по-разному. когда я отправляю форму редактирования в один из контроллеров категории, он перенаправляет обратно к основным задачам, показывающим действие контроллеров. Кажется, что пропустить контроллер категорий все вместе (я проверил это, просто отображая текст на каждом этапе, он даже не касается действия обновления). Я посмотрел на вывод 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>

Когда вы нажимаете кнопку отправки, вы переходите к контроллеру задач.

1 Ответ

1 голос
/ 20 октября 2010

Я обнаружил, что вы можете поместить URL-адрес в форму, чтобы перейти к нему после, поэтому я изменил теги открытия формы:

<% form_for(@task, :url => {:controller => 'com_tasks', :action => 'update', :id => params[:id]}) do |f| %>

Мне пришлось избавиться от своих частичек, потому что я не мог указать оба действия.

...