Ruby on rails 如何在rails中用另一个部分替换一个部分?
我有一个表单partial,我想用isbn\u lookup\u result partial替换它。如何发出ajax请求来替换页面上GET请求给出的结果?我已经看过了,但它似乎不是我要找的 以下是相关代码: _form.html.erb(在视图>列表中) 清单_controller.rb中的查找操作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
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为的divisbn查找结果
<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%>