我目前正在研究Rails 5应用程序的注册部分。这是表格的相关部分:
<%= form_with model: @user, local: true do |f| %>
表单正确提交并执行正确的控制器操作。我的问题是表单提交导致完整的http请求。从表单标签中删除local: true
可以解决此问题,Turbolinks可以正确地提交AJAX请求。
但是,当我从local: true
对象不再显示的形式中删除flash[:errors]
时。
这是我的控制器:
def create
@user = User.new(user_params)
if @user.save
login(@user)
redirect_to dashboard_index_url
else
flash.now[:errors] = @user.errors.full_messages
render :new
# redirect_to new_users_url
end
end
在控制器中使用redirect_to
而不是render
解决了http请求问题,并通过turbolinks ajax提交了表单,但后来我无权访问@user
实例变量。 / p>
任何想法或评论都值得赞赏!