2015-01-07 2 views
0

У меня длинная форма, которая автоматически заполняется информацией из нашей базы данных (на основе частичной информации, предоставленной пользователем). Когда пользователь проверяет информацию и повторно передает форму, информация должна быть сохранена как пользователи. Форма - qualifying_events - является частью, которая находится в представлении/общей папке. Данные, которые автоматически обрабатываются, обрабатываются квалификационным_events_controller как часть метода create. Частичная информация представлена ​​для проверки на странице просмотров/пользователей, отображаемой пользовательским контроллером. Исходная, частичная информация, вводимая пользователем - в аналогичной частичной части на той же странице - правильно сохраняется. Вот вершина формы:form_for создает скорее, чем сообщение, используя rails

<form class="form-inline"> 
    <%= form_for(@qualifying_event) do |f| %> 
    <%= render 'shared/error_messages', object: f.object %> 
<div > 
    <div class="form-group col-sm-12 text-center" style="margin-bottom: 5px;"><h5> 
    <div> 
     <li style="list-style-type: none; float: left; display: none; visibility: hidden;"> 
     <%= current_user %> 
     </li> 
    </div> 
    <div> 
     <li style="list-style-type: none; float: left;"> 
     <%= f.label :class_date %><br/> 
     <%= f.text_area :class_date, autofocus: true %> 
     </li> 
    </div> 

Вот сообщение об ошибке:

No route matches [GET] "/qualifying_events" 

Вот что я пробовал:
1. Явное добавление маршрута в файл конфигурации/маршрутов, хотя это уже показал, если я побежал реки маршруты:

post 'qualifying_events_path'  => 'qualifying_events#create' 


2. Изменение form_for языка явно вызвать " post ':

<%= form_for(@qualifying_event, url: qualifying_events_path, method: => post) do |f| %> 

У меня все еще появляется то же сообщение об ошибке. Поскольку у меня есть другие формы, которые сохраняются в базе данных с одним и тем же кодом, я должен предположить, что что-то меняется, когда форма заполняется из базы данных, и вы хотите повторно сохранить эту информацию. Я использую DEViSE камень, так что я смотрел на регистрации # редактирования кода, надеясь, что я мог бы следовать формату:

<%= form_for(resource, as: resource_name, url: registration_path(resource_name), html: { method: :put }) do |f| %> 

К сожалению, этот подход не работает.

Для «полноты», вот код qualifying_events_controller:

def create 
    @user = current_user 
    @qualifying_event = current_user.qualifying_events.build(qualifying_event_params) 

    if @qualifying_event.validated.nil? 
    # Match partial course information from current_user with records in table 

    # Get partial record's information 
    active_date = @qualifying_event.class_date 
    active_course = @qualifying_event.course_id 
    active_sponsor = @qualifying_event.sponsor_name 

    # Match on class_date, course_id, and sponsor_name 
    @qualifying_event = QualifyingEvent.new 
    @qualifying_event.assign_attributes(QualifyingEvent. 
     where("(class_date = :class_date AND course_id = :course_id) 
     OR (class_date = :class_date AND sponsor_name = :sponsor_name) 
     OR (course_id = :course_id AND sponsor_name = :sponsor_name)", 
     {class_date: active_date, course_id: active_course, 
      sponsor_name: active_sponsor}).first.attributes) 

    # render to confirmation form/form for completion 
    flash[:success] = "Qualifying Event saved for verification!" 
    respond_to do |format| 
    format.html {render 'users/user_dashboard' } 
    end 

else 
    # if the record is complete   
    @qualifying_event.save 
    flash[:success] = "Qualifying Event created!" 
    redirect_to user_dashboard_path 
end 

Там может быть ошибка в «другое» заявление. Я еще не добавил код для проверки наличия всей необходимой информации и т. Д.

Я могу сохранить и получить информацию из базы данных, однако повторная отправка отредактированных информационных вызовов «get», после.' Что мне не хватает? Заранее спасибо.

ответ

0

Удалить <form class="form-inline"> (и закрывающий тег, если есть), до form_for. HTML-формы не могут быть вложенными, поэтому обрабатывается только внешняя форма, которая имеет метод GET.

+0

Спасибо. Это была проблема. – user3763682

1

Удалить первый элемент <form> и исправить form_for код из:

<%= form_for(@qualifying_event, url: qualifying_events_path, method: => post) do |f| %> 

к:

<%= form_for(@qualifying_event, url: qualifying_events_path, method: :post, class: 'form-inline') do |f| %>