【问题标题】:Unable to render more than one line using Rails and Prototype无法使用 Rails 和 Prototype 渲染多于一行
【发布时间】:2011-08-26 00:01:01
【问题描述】:

我在使用 rails 3.0.5 和原型时遇到了一个非常奇怪的问题(这通常意味着我做错了什么)。我正在使用 link_to 来更新 div:

*views/results/index.html.erb
<%= link_to "#{school[:name]}", {:controller => "results", :action => "update", :school => school}, :remote => true%>

这调用了控制器函数更新:

*controllers/results_controller.rb
def update
  @selection = params[:school]
  respond_to do |format|
    format.html {redirect_to :action => 'index'}
    format.js
  end
end

渲染update.js.erb('selected'是index.html.erb中的一个div):

*views/results/update.js.erb
$("selected").update("<%= render :partial => '/results/academics', :locals => { :selection => @selection } %>")

这就是奇怪的地方。如果我的部分 Academics.html.erb 只包含一行纯文本,它就可以正常工作。例如:

*views/results/academics.html.erb
<%= selection[:chances] %>

工作正常。但如果我有不止一条线,它不会。例如:

*views/results/academics.html.erb
<%= selection[:chances] %>
<br>

什么都不渲染。服务器仍然响应 200 OK,但 div 没有改变。 我做错了什么?

【问题讨论】:

    标签: javascript ruby-on-rails ruby-on-rails-3 prototypejs


    【解决方案1】:

    escape_javascript 是你所需要的

    $("selected").update("<%= escape_javascript(render :partial => '/results/academics', :locals => { :selection => @selection }) %>")
    

    【讨论】:

      猜你喜欢
      • 2010-10-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-05-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-29
      相关资源
      最近更新 更多