【发布时间】:2017-09-17 07:55:11
【问题描述】:
我是 Rails 的初学者,但我对此进行了很多搜索,但似乎无法找到可以帮助我的东西,因为我很难解决问题。我已经建立了一个工作方法,它从亚马逊请求关于给定 ISBN 的书的信息,现在想在用户将 ISBN 输入表单后使用它来自动填充有关该书的信息。这是我的方法(在我的 Listing.rb 模型文件中):
def self.isbn_lookup(val)
request = Vacuum.new('US')
request.configure(
aws_access_key_id: 'access_key_here',
aws_secret_access_key: 'secret_access_key_here',
associate_tag: 'associate_tag_here'
)
response = request.item_lookup(
query: {
'ItemId' => val,
'SearchIndex' => 'Books',
'IdType' => 'ISBN'
},
persistent: true
)
fr = response.to_h #returns complete hash
author = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Author")
title = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Title")
manufacturer = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Manufacturer")
url = fr.dig("ItemLookupResponse","Items","Item","ItemLinks","ItemLink",6,"URL")
return {title: title, author: author, manufacturer: manufacturer, url: url}
end
这里是我的控制器。我不确定如何使这个通用化,以便 ISBN 编号依赖于用户输入的内容(它应该采用用户给出的值,而不是假设始终设置 @isbn 实例变量):
def edit
@isbn = Listing.isbn_lookup(1285741552)
end
这是我的 _form.html.erb 部分,我想在其中调用此 ISBN 自动填充:
<%= 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)", autofocus: true %>
</div>
</div>
...
<% end %>
最后,这是我认为应该是 AJAX 调用开始的 JS:
$(document).ready(function() {
$(document).on('keyup','input#auto-isbn',function() {
$.get(this.action, $(this).serialize(), null, "script");
return false;
});
});
如何让用户输入 ISBN 时,我的应用会调用 isbn_lookup 方法,然后返回收集到的信息?
【问题讨论】:
-
你在使用 JQuery 吗?还是只是普通的 JS?
-
我正在使用 jQuery
标签: ruby-on-rails ajax