Rails呈现javascript显示文本

时间:2012-11-02 18:53:09

标签: ruby-on-rails ruby ajax

我不确定这种行为是否正常,但是当我这样做时:

render js: "window.location.pathname = '#{new_user_session_path}';"

在我的控制器中,它会在执行行并成功重定向之前短暂显示文本window.location.pathname = '/user/sign_in';

以下是完整的控制器操作:

def vote_down
    if user_signed_in?
      current_user.vote_exclusively_against(@deal = Deal.find(params[:id]))

      render :partial => 'deals/partials/interaction', 
        :locals => {:deal => @deal, :votes_for => @deal.votes_for, :votes_against => @deal.votes_against}
    else
      render js: "window.location.pathname = '#{new_user_session_path}';"
      flash[:error] = 'Please sign in to vote.'
    end
  end

如何防止这种情况发生并直接呈现该模板?

1 个答案:

答案 0 :(得分:1)

为什么不直接使用rails控制器路由重定向回new_user_session_path?

respond_to do |format|
   format.html { redirect_to new_user_session_path, error: 'Please sign in to vote.' }
end