【问题标题】:Rails 3: Ajax and the <%= escape_javaScript(item) %>Rails 3:Ajax 和 <%= escape_javaScript(item) %>
【发布时间】:2011-07-05 19:18:45
【问题描述】:

*(请注意,一切都在 Ajax 之外完美运行。可提交类用于提交表单 onchange)

所以我在这里设置了一个基本示例,由于某种原因,我无法在表单提交上显示 。为了更好地解释,我将只显示我的相关代码。

index.html.erb

<% @contacts.each do |contact| %>
    <%= form_for contact,:remote => true do |f| %>
        <div class="editField">
            <%= f.collection_select :agent_id, get_user_list("agent"), :id, :full_name, {:include_blank => 'None assigned'},:class => "submittable" %>
        </div>
    <% end %>
    <div id="agent2">
        <%= contact.agent_id %>
    </div>
<% end %>

contact_controller.rb

def update
    @contact = Contact.find(params[:id])


    respond_to do |format|
      if @contact.update_attributes(params[:contact])
        format.js { render }
      end
    end
end

update.js.erb

$('#agent2').html("<%= escape_javaScript(contact.agent_id) %>");

通过该设置,我没有得到任何响应或更改 (div id agent2) 但如果我有使用此代码的 update.js.erb

$('#agent2').html("something");

文本“something”替换当前的contact.agent_id

我对它为什么不能正常工作感到非常困惑。我正在使用带有 ruby​​ 1.8.7(2010-08-16 补丁级别 302)[i686-darwin10] 的 Rails 3.0.3,并使用 Jquery。

【问题讨论】:

  • 您是否收到任何控制台错误或 javascript 错误(使用 chrome 开发工具/firebug)?也尝试使用@contact 代替联系人

标签: ruby-on-rails-3 jquery


【解决方案1】:

您调用escape_javascript 助手有什么特殊原因吗?看起来您只是希望 agent_id 值位于 #agent2 div 内。是这样吗?你试过$('#agent2').html("&lt;%= contact.agent_id %&gt;");

通常,当我使用 escape_javascript 辅助方法时,我会传入一个部分,因此调用看起来像:

$('#agent2').html("<%= escape_javascript( render(:partial => 'partial_name') ) %>");

希望有帮助!

【讨论】:

    【解决方案2】:

    escape_javascript 区分大小写并且全部小写。你可以试试:

    $('#agent2').html("<%= escape_javascript('something') %>");
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      • 1970-01-01
      • 2011-04-06
      • 2011-07-14
      • 2011-08-05
      相关资源
      最近更新 更多