2016-09-01 58 views
0

您好StackOverflow用戶, 我目前正在創建一個搜索表單,
,我想有一個collection_select可用的書籍列表。Rails - f.collection_select顯示但不選擇值

用戶得到了書籍和一個連接表是連接他們

2種型號:User/Book
連接表:Book_User 和對雙方許多關係

用戶模型:

has_many :games, :through => :book_users 
    has_many :book_users 
    accepts_nested_attributes_for :books 

書籍模型 has_many:users,:through =>:book_users has_many:book_user小號 accepts_nested_attributes_for:用戶

形式正在與標準領域的Text_field_tag和結果是正確的(我需要BOOK_NAME,使其工作):

<%= form_tag search_path, :class => "webdesigntuts-workshop", method: :get do %> 
    .... 
<%= label :book_name, "" %> 
     <%# text_field_tag :book_name, params[:book_name], placeholder: 'books' %> 
     <%= collection_select(:book, :book_name, Book.all, :id, :name, prompt: true) %> 
     <%= submit_tag "Search" %> 
<% end %> 

的collection_Select正在顯示的列表但是當我選擇書的名稱,然後單擊提交按鈕時,請求中不會考慮該書。我也嘗試了選項:selected => params[book_name]

集合選擇是否正確寫入?

我想我應該做一個f.collection_select,即時通訊的形式,但我與屬性鬥爭。 我希望somenone能幫助我的那部分:)

很多感謝,

馬丁

回答

0

你必須通過book_id選定的,而不是book_name。試試看:

<% book = Book.find_by name: params[:book_name] %> 
<%# text_field_tag :book_name, params[:book_name], placeholder: 'books' %> 
<%= collection_select(:book, :book_name, Book.all, :id, :name, {selected: book.try(:id)}, prompt: true) %> 
+0

它的工作,我沒有錯誤,但沒有考慮到請求中所選的值。我將繼續搜索;) –

+0

我把它作爲控制檯參數中的參數:{「utf8」=>「✓」,...,「book」=> {「book_name」=>「4」},「commit 「=>」搜索「}我想它返回一個名稱的ID和搜索期望的書名字符串 –

+0

如果我可以有這個參數」book_name「=>」bookTitle「它會工作,我是關閉;),感謝您的答案btw –