【问题标题】:AJAX call not rendering my partial rails 3AJAX 调用未渲染我的部分 rails 3
【发布时间】:2013-01-25 15:47:10
【问题描述】:

我正在尝试让 Ajax 调用在 Rails 中工作,但不太确定我做错了什么

所以在我的索引中,我有一个调用 api 然后将结果返回到结果路径的表单。所以我想做的是让结果呈现在索引页面上

我目前拥有的是

控制器

def index

end

def results
 results = contact_search(params[:search])
 @results = results
end

索引

<div class="container">
 <div class="row">
  <div class="span6 offset3">
   <h2>Search for a contact</h2>
    <%= form_tag  results_path,  :method => "get", :remote => true do %>
    <%= text_field_tag 'search', nil, :placeholder => "Enter Email Address here...." %>
    <%= submit_tag 'Search' , :id => "submitForm" %>
   <% end %>
  </div>
 </div>
</div>

 <div class="container">
  <div class="row">
<div class="span6 offset3">
 <div class="cResults">

     </div>
    </div>
  </div>
 </div>

部分_contactResults.html.erb

<h1>The Results</h1>
 <%= @results["contactInfo"]["familyName"] %><br>
 <img src= <%= @results["photos"].first["url"] %> />

Index.js.erb

$('.cResults').html("<%= escape_javascript(render partial: 'contactResults') %>");

我错过了什么吗?

【问题讨论】:

  • 我觉得js文件应该是results.js.erb,为什么?因为index.js.erb在控制器收到index action上的JS格式请求时被“执行”了。
  • 是的,这行得通,所以规则是为要通过 Ajax 拉入的视图创建一个 js.erb 文件?
  • 你愿意把它作为答案吗,我很乐意接受
  • 我刚刚发布了一个包含更多细节的答案

标签: ruby-on-rails ajax ruby-on-rails-3


【解决方案1】:

您的 javascript 文件应命名为“计算”结果的操作:

# in results.js.erb, not index.js.erb
$('.cResults').html("<%= escape_javascript(render partial: 'contactResults') %>");

如果你需要为控制器的动作执行Javascript,你可以将文件命名为动作,用.js.erb代替普通的.html.erb。当控制器收到此操作的请求时,将执行此文件,解释为 JS。

【讨论】:

    猜你喜欢
    • 2013-06-19
    • 1970-01-01
    • 1970-01-01
    • 2021-10-16
    • 1970-01-01
    • 2012-10-16
    • 2023-03-11
    • 2011-03-05
    • 2023-03-21
    相关资源
    最近更新 更多