我正在构建一个 Rails 应用程序,它允许用户根据来自 Google Books api 的搜索结果创建一个 Book 对象。我有一个控制器来处理搜索 api,使用 GoogleBooks gem 并在列表中显示结果。我正在努力寻找一种将书籍信息从单个搜索结果传递到 Books 控制器中的 Create 操作的方法。
我的搜索控制器从我的搜索表单中获取参数并创建一个变量@results,我在“搜索”视图中调用它。这是我的搜索控制器:
class SearchController < ApplicationController
def search
@results = GoogleBooks.search(params[:search])
end
end
我的观点是这样的:
<h1>Search Results</h1>
<% @results.each do |result| %>
<ul>
<li><%= result %></li>
<li><%= result.title %></li>
<li><%= result.authors %></li>
<li><%= result.isbn %></li>
<li><%= result.description %></li>
</ul>
<% end %>
我遇到的问题是我不确定如何将单个结果数据传递给我的书控制器的“创建”操作以在数据库中生成一本新书。例如,我认为我不能将“result.title”或“result.author”传递给 Book 控制器,因为它们不是实例变量,也无法区分每个结果。
我的搜索结果页面来源如下所示,如果有帮助的话。
<h1>Search Results</h1>
<ul>
<li>#<GoogleBooks::Item:0x007ff75d2bd138></li>
<li>Kansha: Celebrating Japan's Vegan and Vegetarian Traditions</li>
<li>Elizabeth Andoh</li>
<li>9781607743965</li>
<li>The celebration of Japan’s... </li>
</ul>
<ul>
<li>#<GoogleBooks::Item:0x007ff75d2bc148></li>
<li>Advanced Energy Saving and Its Applications in Industry</li>
<li>Kazuo. Matsuda, Yasuki. Kansha, Chihiro. Fushimi</li>
<li>9781447142072</li>
<li>The conventional approach for... </li>
</ul>
我想使用一个按钮来允许用户“选择”这本书,然后将这本书的信息传递给创建操作。我想我需要用 button_to 做这样的事情:
<%= button_to 'Create Book', book_path, :method => :post %>
但是如何将单本书的数据获取到创建操作?