我構建了一個Rails應用程序,該應用程序允許用戶根據Google圖書api的搜索結果創建一個Book對象。我有一個控制器,使用GoogleBooks gem處理搜索api,並將結果顯示在列表中。我正在努力想出一種方法,將書籍信息從單個搜索結果傳遞到Books控制器中的Create操作。從一個搜索結果塊創建對象Ruby on Rails
我的搜索控制器從我的搜索表單中獲取params並創建一個變量@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 %>
但是,如何獲取單個圖書的數據到創建操作?
這裏有很多事情要做 - 完整的解決方案需要花費太多時間進行勾畫。但簡單的答案是,我肯定會用ajax請求來做到這一點。將每個項目與一個按鈕一起包裝在一個div中,然後將ajax後置操作綁定到按鈕點擊。您將可以輕鬆獲取相同父元素內的數據,以作爲參數傳遞。 – gregates
@gregates感謝您的提示。我對rails比較陌生,但我會考慮實現一個AJAX post操作。 –