我希望在这里澄清我的理解或实际上理解…JSON响应如下
{
"resultCount":1,
"results": [
{"kind":"ebook", "artistId":545975179, "artistName":"Gareth Halfacree", "price":9.99,
"description":"<p><b>Make the most out of the world’s first truly compact computer</b></p><p>It's the size of a credit card, it can be charged like a smartphone, it runs on open-source Linux, and it holds the promise of bringing programming and playing to millions at low cost. And now you can learn how to use this amazing computer from its co-creator, Eben Upton, in <i>Raspberry Pi User Guide</i>. Cowritten with Gareth Halfacree, this guide gets you up and running on Raspberry Pi, whether you're an educator, hacker, hobbyist, or kid. Learn how to connect your Pi to other hardware, install software, write basic programs, and set it up to run robots, multimedia centers, and more.</p><ul><li>Gets you up and running on Raspberry Pi, a high-tech computer the size of a credit card </li><li>Helps educators teach students how to program </li><li>Covers connecting Raspberry Pi to other hardware, such as monitors and keyboards, how to install software, and how to configure Raspberry Pi </li><li>Shows you how to set up Raspberry Pi as a simple productivity computer, write basic programs in Python, connect to servos and sensors, and drive a robot or multimedia center </li></ul><p>Adults, kids, and devoted hardware hackers, now that you've got a Raspberry Pi, get the very most out of it with <i>Raspberry Pi User Guide</i>.</p>", "genreIds":["10017", "38", "9027"], "releaseDate":"2012-08-30T07:00:00Z", "currency":"USD", "genres":["Computers", "Books", "Computers & Internet"], "trackId":559783692, "trackName":"Raspberry Pi User Guide", "artistIds":[545975179], "artworkUrl60":"http://a2.mzstatic.com/us/r30/Publication/v4/ba/a8/2c/baa82ce0-2ac7-7026-04da-6f74bc97b403/9781118464496.60x60-50.jpg", "artistViewUrl":"https://itunes.apple.com/us/artist/gareth-halfacree/id545975179?mt=11&uo=4", "trackCensoredName":"Raspberry Pi User Guide", "formattedPrice":"$9.99", "artworkUrl100":"http://a4.mzstatic.com/us/r30/Publication/v4/ba/a8/2c/baa82ce0-2ac7-7026-04da-6f74bc97b403/9781118464496.100x100-75.jpg", "trackViewUrl":"https://itunes.apple.com/us/book/raspberry-pi-user-guide/id559783692?mt=11&uo=4", "averageUserRating":2.5, "userRatingCount":5}]
}
,我想保存它的某些值到我的书模型后,单击link_to(我已经读到,link_to比说button_to更安全)
我有一个处理解析的模块包含在我的控制器
中 module Book::BookFinder
BOOK_URL = 'https://itunes.apple.com/lookup?isbn='
def book_search(search)
response = HTTParty.get(BOOK_URL + "#{search}", :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
results = JSON.parse(response.body)["results"]
end
end
Within my books controller
class BookController < ApplicationController
before_filter :authenticate_admin_user!
include Book::BookFinder
def searchbook
end
def results
results = book_search(params[:search])
@results = results
end
def savebook
Book.create(:author => response["results"]["artistName"])
end
end
(首先我看到这个,认为使用rails rest式实践会更好,所以使用new和create方法?)
我有一个link_to设置发布数据到我的模型
<%= link_to 'Save Book', savebook_path, :method => :post %>
和我的路线
scope :controller => :book do
get 'searchbook'
get 'results'
post 'savebook'
end
所以目前我得到一个错误消息,当点击link_to,它说错误的参数数(0为1)。
因为我从外部获得数据,它已经抛出了我一点,当处理使用新的,创建,编辑等表单发布数据时,这是有意义的,但在这里我有点失落
谁能提供一些建议/解决方案来帮助我了解需要发生什么?
谢谢
我建议您稍微更改一下体系结构。假设您在结果操作中收到api响应:
def results
...
@results = book_search(params[:search])
@book = Book.new
@book.author = results[0]["artistName"]
...
end
def create
@book = Book.new(params[:book])
if @book.save
redirect_to @book, notice: 'Book was successfully saved'
else
render action:new
end
end
results视图,而不是
<%= link_to 'Save Book', savebook_path, :method => :post %>
使用...
<%= form_for @book do |f| %>
<%= f.hidden_field :author %>
...
<%= f.submit 'Save book' %>
<% end %>
绝对标准的book控制器带有create action