【问题标题】:redirecting/reloading page in js.erb instead of controller在 js.erb 而不是控制器中重定向/重新加载页面
【发布时间】:2012-03-11 04:23:02
【问题描述】:

我的 index.js.erb 只刷新了部分页面:

$("#view").html("<%= escape_javascript render 'view' %>");

我可以用这条线在控制器中完全刷新它:

format.js { render :js => "window.location.replace('#{url_for(:controller => :view, :action => :index, :some_parameter => value)}');" }

js.erb中是否可以刷新页面?

编辑: 我在控制器中通过这个命令调用 index.js.erb:

format.js { redirect_to(:action => :index, :format => :js, :some_parameter => value)}, 

它使用 some_parameter 的内容刷新页面,但只刷新部分内容。

window.location 效果更好,但我在堆栈溢出帖子之一中读到,使用 erb 比使用控制器更好的 javascript。真的吗?

【问题讨论】:

    标签: javascript ruby-on-rails erb


    【解决方案1】:

    对于第二种方式,您正在刷新整个页面(发出另一个 http 请求),如果您想这样做,为什么不直接使用 redirect_to

    【讨论】:

    • 我尝试使用 format.js { redirect_to(:action => :index, :format => :js, :some_parameter => value)},但它忽略了参数并刷新了页面仅部分地,window.location.replace 会完全刷新页面。我认为 redirect_to 不起作用的原因是我的 index.js.erb
    • 你不需要 format.js。只需重定向到网址。类似redirect_to :action =&gt; :index
    • 我使用 format.js 来渲染 index.js.erb,它做了一些需要的额外工作。如果我只用 redirect_to 替换 format.js 它根本不会刷新页面
    • 浏览器希望接收 javascript,因此我无法仅使用 redirect_to 来呈现 HTTP 重定向,而我的问题的答案可能是否定的,最好通过磨回 Javascript 在控制器中重定向。谢谢,xdazz。
    猜你喜欢
    • 2011-11-19
    • 1970-01-01
    • 2018-03-09
    • 2019-03-10
    • 2020-06-24
    • 1970-01-01
    • 2021-07-18
    • 2015-01-21
    相关资源
    最近更新 更多