【发布时间】:2018-06-23 00:10:43
【问题描述】:
我正在尝试让用户输入 ISBN 号并接收有关该图书的数据。这在用户第一次输入 ISBN 编号时有效,但当他/她尝试更改它时,该值无法更新(尝试更改该值后,它会自行更改回第一个 ISBN 编号)。
我有一个_form.html.erb 部分,当在input#isbn_field 中输入某些内容时会更新它。如果 ISBN 有效,则更新 info 以将 div 中的其他信息(作者姓名、标题等)替换为 id: 'isbn-lookup-results-container'。
如何在 isbn_lookup_result 部分加载后更改 ISBN?
listings_controller.rb
def lookup
@listing = Listing.new
@isbn_lookup_result = Listing.amazon_lookup(params[:isbn])
render partial: 'isbn_lookup_result'
end
lookup.js.coffee
$(document).ready ->
TIMEOUT = null
$(document).on 'keyup', 'input#isbn_field', ->
clearTimeout TIMEOUT
TIMEOUT = setTimeout((->
ajaxResponse = $.ajax(
url: '/listings/lookup'
type: 'GET'
data:
isbn: $('input#isbn_field').val())
ajaxResponse.success (data) ->
$('#isbn-lookup-results-container').html data
$('#form-unfilled').hide()
return
ajaxResponse.error (data) ->
alert 'Not a valid ISBN'
return
return
), 2000)
return
return
_isbn_lookup_result.html.erb
<%= form_for(@listing, :html => {class: "form-horizontal" ,
role: "form"}, method: :get) do |f| %>
<div class="form-group">
<%= f.text_field :isbn , class: "form-control" ,
id: "isbn_field", placeholder: "ISBN (10 or 13 digits - no dashes)",
value: @isbn_lookup_result[:isbn], autofocus: true %>
</div>
# More stuff
<% end %>
【问题讨论】:
标签: ruby-on-rails ajax coffeescript