javascript - respond_to 和 redirect_to 未按预期工作

标签 javascript ruby-on-rails

我有一个使用 form_for 和 remote: true 设置的表单。

<%= form_for(@vocab, url: user_vocab_path(@user, @vocab), remote: true)  do |f| %>

正如预期的那样,vocab Controller 中的相应更新操作将请求作为 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 处理。带或不带重定向中指定的格式。可以吗?解释一下为什么?

我阅读了所有 Rails 指南和 API,但没有从中得到任何东西。

最佳答案

看起来您正在尝试使用 html 文件响应 js 请求。我认为您基本上希望远程表单具有非远程行为(重定向)。因此,将 format.js 更改为 format.html 并删除 remote: true 应该是一个解决方案。如果您想进行前端重定向(这意味着必须发送另一个请求),您可以尝试使用

format.js { 内联渲染:“window.location.href = '#{home_user_path(@user)}'”}

关于javascript - respond_to 和 redirect_to 未按预期工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28630789/

相关文章:

ruby-on-rails - 具有奇怪路由错误的继承应用程序,没有路由匹配 {}

javascript - 使用 JQuery 附加带有样式的 div

javascript - 使用 jquery 从 window 对象中删除事件监听器

javascript - 聚合物 2 元素中的铁形式 2.0 : function not defined

ruby-on-rails - Rails 通过 has_and_belongs_to_many 属性进行过滤

ruby-on-rails - 参数错误 : invalid radix -1

ruby-on-rails - 编码或序列化 ActiveRecord 对象

javascript - 如何将价格限制为小数点后两位

javascript - jquery 对话框需要点击两次才能关闭

ruby-on-rails - Rails rescue_from 重新引发异常