Ошибки Rails сбрасывают параметры формы

#ruby-on-rails

#ruby-on-rails

Вопрос:

Это кажется простым, но я ничего не могу найти по этому поводу.

У меня есть ссылка, чтобы запросить встречу с другим пользователем. В результате создается URL, подобный этому:

 http://localhost:3000/meetings/new?requestee_id=5
  

Идентификатор получателя запроса и другая информация в форме передаются в MeetingController:

 def create

 requestor = current_user
 @meeting_with_params = meeting_params
 @meeting = Meeting.new(meeting_params)

 respond_to do |format|
  if @meeting.save
    format.html { redirect_to home_url, notice: 'Your lex was successfully requested! Click Plan Meeting ' }
    format.json { render :show, status: :created, location: @meeting }
  else
    format.html { render :new, params: @meeting_with_params }
    format.json { render json: @meeting.errors, status: :unprocessable_entity }
  end
 end
end
  

При наличии ошибок URL-адрес теперь выглядит следующим образом:

 http://localhost:3000/meetings
  

это означает, что форма никогда не будет отправлена, поскольку requestee_id отсутствует.

Как правильно заставить пользователя видеть ошибки, но параметры URL никогда не сбрасываются? Спасибо!

Комментарии:

1. Я не понимаю последнюю часть этого предложения «Как правильно заставить пользователя видеть ошибки, но параметры URL никогда не сбрасываются?»

2. Вы можете сделать это с помощью ajax submit, но вам нужно показать ошибку из js.

3. @CdotStrifeVII вопрос в том, как можно отобразить ошибки, сохранив при этом URL-адрес прежним. Прямо сейчас он удаляет параметры из URL

4. @prakashS Есть ли способ rails/

5. @ThomasR.Koll это мой вопрос. Как это сделать с помощью rails, а не ajax.

Ответ №1:

Вы можете сделать это:

format.html { render "path/to/new?{@meeting_with_params.to_param}" }

или

Вы можете использовать помощники пути rails. Вы можете rake routes и найти вспомогательный путь вашего URL (он выглядит примерно так: edit_user_path, new_user_path)

format.html { render new_meeting_path(@meeting_with_params) }

Комментарии:

1. @gwalshington помогает ли это?

Ответ №2:

Поскольку вы можете использовать ajax для этой проверки [https://github.com/rails/jquery-ujs](jquery-ujs) , ваш тег формы должен выглядеть примерно так:

 form_for @meeting, data: {remote: true} ...