Ruby on rails 如何在rails中用另一个部分替换一个部分?

Ruby on rails 如何在rails中用另一个部分替换一个部分?,ruby-on-rails,ajax,partials,Ruby On Rails,Ajax,Partials,我有一个表单partial,我想用isbn\u lookup\u result partial替换它。如何发出ajax请求来替换页面上GET请求给出的结果?我已经看过了,但它似乎不是我要找的 以下是相关代码: _form.html.erb(在视图>列表中) 清单_controller.rb中的查找操作 def lookup @isbn_lookup_result = Listing.isbn_lookup(params[:isbn]) render partial: 'isb

我有一个表单partial,我想用isbn\u lookup\u result partial替换它。如何发出ajax请求来替换页面上GET请求给出的结果?我已经看过了,但它似乎不是我要找的

以下是相关代码:

_form.html.erb(在视图>列表中)

清单_controller.rb中的查找操作

  def lookup
    @isbn_lookup_result = Listing.isbn_lookup(params[:isbn])
    render partial: 'isbn_lookup_result'
  end
尝试AJAX请求isbn_lookup.js文件(对jvillian大喊大叫,感谢他帮助我走到这一步)

执行此操作时:

$('#isbn-lookup-results-container').html(data)
因为您没有带有
id=“isbn查找结果容器”
div
,所以不会发生任何事情。因此,您可能需要执行以下操作:

<div class="row">
  <div id="isbn-lookup-results-container" class="col-md-12">
    ...
  </div>
</div>
<%= form_for(@listing, :html => {class: "form-horizontal" , role: "form"}, method: :get) do |f| %>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :isbn, "ISBN" %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :isbn, id: "auto-isbn", class: "form-control" , placeholder: "ISBN (10 or 13 digits)", value: @isbn_lookup_result[:isbn] %>
    </div>
  </div>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :title %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :title , class: "form-control" , placeholder: "Title of book", value: @isbn_lookup_result[:title], autofocus: true %>
    </div>
  </div>
  ...
<%end%>
您的
\u isbn\u lookup\u result.html.erb
看起来与
\u form.html.erb
中的表单相同。您不想对isbn\U查找的结果做些什么吗?可能是这样的:

<div class="row">
  <div id="isbn-lookup-results-container" class="col-md-12">
    ...
  </div>
</div>
<%= form_for(@listing, :html => {class: "form-horizontal" , role: "form"}, method: :get) do |f| %>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :isbn, "ISBN" %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :isbn, id: "auto-isbn", class: "form-control" , placeholder: "ISBN (10 or 13 digits)", value: @isbn_lookup_result[:isbn] %>
    </div>
  </div>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :title %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :title , class: "form-control" , placeholder: "Title of book", value: @isbn_lookup_result[:title], autofocus: true %>
    </div>
  </div>
  ...
<%end%>
{class:“form horizontal”,role:“form”},method::get)do | f |%>
...
因此,
isbn
title
的值以新的形式显示


您不能在任何地方使用
作者
制造商
url
。这就是你的意图吗?如果您不打算使用它们,那么将它们加载到您的
散列中似乎很奇怪

你好。你能用整个
\u form.html.erb
更新你的问题吗?我正试图更好地理解这个表单的实际功能。从您发布的信息来看,用户可以通过ISBN或标题进行查找,对吗?刚刚添加了_form.html.erb代码jvillian的其余部分。从获取结果到实际显示结果(从形式部分更改为isbn_lookup_result partial),在逻辑上仍有困难。另外,Javascript中的变量通常不是用@符号声明的吗?我是否应该将
@TIMEOUT
替换为
var TIMEOUT=null
,然后只使用
TIMEOUT
而不是
@TIMEOUT
?继续?单击我最后一条评论中的链接。我决定添加
作者
制造商
url
,以便以后如果需要,我可以使用它们。然而,我在这方面仍然有一些困难。似乎我的ajax无法识别我何时完成了输入。我已更改代码以添加id为的div
isbn查找结果
<div class="row">
  <div id="isbn-lookup-results-container" class="col-md-12">
    ...
  </div>
</div>
return {title: title, author: author, manufacturer: manufacturer, url: url, isbn: val}
<%= form_for(@listing, :html => {class: "form-horizontal" , role: "form"}, method: :get) do |f| %>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :isbn, "ISBN" %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :isbn, id: "auto-isbn", class: "form-control" , placeholder: "ISBN (10 or 13 digits)", value: @isbn_lookup_result[:isbn] %>
    </div>
  </div>
  <div class="form-group">
    <div class="control-label col-sm-2">
      <%= f.label :title %>
    </div>
    <div class="col-sm-8">
      <%= f.text_field :title , class: "form-control" , placeholder: "Title of book", value: @isbn_lookup_result[:title], autofocus: true %>
    </div>
  </div>
  ...
<%end%>