respond_to和redirect_to没有按预期工作

时间:2015-02-20 14:01:32

标签: javascript ruby-on-rails

我有一个使用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,但无法从中获取任何内容。

1 个答案:

答案 0 :(得分:1)

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

format.js { render inline: "window.location.href = '#{home_user_path(@user)}'"}