Ошибка маршрутизации, которая, кажется, имеет отношение к частичным и / или формам - PullRequest
0 голосов
/ 30 ноября 2010

В приложении на Rails 3 у меня есть часть таблицы, которая содержит таблицу формы ввода данных, а также отдельную меньшую форму (в основном скрытые поля) под ней, чтобы очистить данные таблицы. У меня есть третья форма под частичной, чтобы добавить новый столбец в таблицу, содержащуюся в частичной. Страница загружается нормально. Небольшая форма для очистки данных таблицы работает и обновляет частичное так, как это должно быть. НО, когда я отправляю форму добавления нового столбца, я получаю эту ошибку маршрутизации:

ActionView::Template::Error (No route matches {:controller=>"outcome_results", :action=>"clear_table"}):

    70:                         </table>
    71:                 <%= submit_tag "Save" %>
    72:         <% end %>
    73:                 <%= form_tag url_for(:controller => 'outcome_results', :action => 'clear_table'), :id => "clear_data_table_link", :remote => true do %>
    74:                 <%= hidden_field_tag "subgroup_id", subgroup_id %>
    75:                 <%= hidden_field_tag "outcome_id", @selected_outcome_object.id %>
    76:                 <%= hidden_field_tag "timepoint_id", timepoint_id %>

app/views/outcome_results/_table.html.erb:73:in `_app_views_outcome_results__table_html_erb__204353865_18893424_435027370'
app/controllers/outcome_columns_controller.rb:36:in `block (3 levels) in create'
app/controllers/outcome_columns_controller.rb:35:in `block (2 levels) in create'
app/controllers/outcome_columns_controller.rb:33:in `create'

Строка 72 является конечным тегом первой (таблица / ввод данных) формы. Строка 73 - это тег формы для моей чистой таблицы данных, которая сама по себе работает нормально - ошибок маршрутизации нет.

Мой route.rb безумно долго, но содержит следующую строку:

match 'projects/:project_id/studies/:study_id/clear_table' => 'outcome_results#clear_table'

Форма добавления нового столбца выглядит следующим образом:

<div id="outcome_column_validation_message"></div>
<%= form_for @outcome_column, :action => :create, :remote => true,  :id=>"outcome_columns_form" do |f| %>

<%= hidden_field_tag "outcome_id", !@selected_outcome_object.nil? ? @selected_outcome_object.id : nil %>
<%= hidden_field_tag "subgroup_id", !@selected_timepoint.nil? ? @selected_timepoint : 0 %>
<%= hidden_field_tag "timepoint_id", !@selected_subgroup.nil? ? @selected_subgroup : 0 %>
  <div class="field">
    Custom Column Title: <%= f.text_field :name %> Description: <%= f.text_field :description %> <%= f.submit "Add Custom Column" %>
<% end %>

и раздел формата действия "create" в контроллере "output_column" выглядит следующим образом:

respond_to do |format|
 format.js {
        render :update do |page|
             page.replace_html 'outcome_results_table', :partial => 'outcome_results/table'
             page['outcome_columns_form'].reset
             page.replace_html 'outcome_column_validation_message', ""
        end
     }
end

Я могу выложить больше кода, если это поможет ... у кого-нибудь есть идеи по поводу этой ошибки маршрутизации?

Заранее спасибо.

1 Ответ

0 голосов
/ 01 декабря 2010

Маршрут будет принимать два аргумента: project_id и study_id. Это не соответствует маршруту, потому что вы не передали эти два параметра в url_for в вашем form_tag.

...