Rails错误重置形式参数

时间:2016-10-20 15:02:09

标签: ruby-on-rails

这看似简单,但我找不到任何内容。

我有一个链接请求与其他用户会面。这会产生这样的网址:

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

被邀请者id和表单中的其他信息被传递给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

如果有错误,网址现在看起来像这样:

http://localhost:3000/meetings

这意味着表单永远不会提交,因为requestedtee_id不存在。

让用户看到错误的正确方法是什么,但url params永远不会被重置? 谢谢!

2 个答案:

答案 0 :(得分:0)

你可以这样做:

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

OR

您可以使用rails path helpers。你可以rake routes找到你的url帮助路径(它看起来像这样:edit_user_path,new_user_path)

format.html { render new_meeting_path(@meeting_with_params) }

答案 1 :(得分:0)

由于您可以使用ajax进行此结帐[https://github.com/rails/jquery-ujs](jquery-ujs),因此您的表单标记必须如下所示:

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