我有一个使用form_for和remote设置的表单:true。
<%= form_for(@vocab, url: user_vocab_path(@user, @vocab), remote: true) do |f| %>
正如预期的那样,词汇控制器中的相应更新操作将请求处理为JS:
Processing by VocabsController#update as JS
然后神秘发生了。在有效数据的情况下,我想重定向用户。使用标准HTML请求。我猜对了。这样应该可行,但它没有:
def update
@user = current_user
@vocab = @user.vocabs.find(params[:id])
respond_to do |format|
format.js { redirect_to home_user_path(@user), format: 'html' }
end
end
UsersController中的home操作也将请求作为JS处理。使用或不使用重定向中指定的格式。可以s.o.解释我为什么?
我阅读了所有Rails指南和API,但无法从中获取任何内容。
答案 0 :(得分:1)
看起来您正在尝试使用html文件响应对js的请求。我认为你基本上想要一个远程表单的无远程行为(重定向)。因此,将format.js
更改为format.html
并删除remote: true
应该是一种解决方案。如果您想要进行前端重定向(这意味着必须发送另一个请求),您可以尝试使用
format.js { render inline: "window.location.href = '#{home_user_path(@user)}'"}