0

私はここで私の理解を明確にするか、実際に理解しようとしています...私はそのようなJSON応答を持っています

  {
 "resultCount":1,
  "results": [
 {"kind":"ebook", "artistId":545975179, "artistName":"Gareth Halfacree", "price":9.99, 
 "description":"<p><b>Make the most out of the world&rsquo;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

私の本コントローラー内

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 の安らかなプラクティスを使用する方が良いと思うので、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 をクリックするとエラー メッセージが表示され、引数の数が間違っています (1 に対して 0) と表示されます。

私は外部からデータを取得しているので、新しい、作成、編集などを使用してフォームからデータを投稿することを扱うとき、それは私を少し投げましたが、ここで私は少し迷っています

何が起こる必要があるかを理解するのに役立つアドバイス/解決策を誰かが提供できますか

ありがとう

4

1 に答える 1

3

アーキテクチャを少し変更することをお勧めします。結果アクションで 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

結果ビュー、代わりに

<%= link_to 'Save Book', savebook_path,  :method => :post %>

使用する

...
<%= form_for @book do |f| %>
  <%= f.hidden_field :author %>
  ...
  <%= f.submit 'Save book' %>
<% end %>

そして create アクションを備えた完全に標準の Books コントローラ

于 2013-01-04T10:36:48.320 に答える