0

我目前有一個表格按幾個選擇框和兩個單選按鈕排序/篩選,並且工作正常。我會選擇框從表中自動填充。具體來說,我想從我的文章表中的狀態填充狀態選擇框。我目前有articles.rb模型和state.rb模型,並且我建立了關係。文章belongs_to:狀態,狀態has_many:文章。這是我到目前爲止的代碼:從表中填充的選擇框

index.html.erb

<%= form_tag articles_path, :method => "GET" do %> 

    <%= radio_button_tag :gender_search, "M" %> 
    <%= label_tag :gender_search_M, "M" %> 
    <%= radio_button_tag :gender_search, "F" %> 
    <%= label_tag :gender_search_F, "F" %> 

    <%= select_tag :state_search, options_for_select([['Select a state', 0],['-----------', 0],['LA', 'LA'],['MS', 'MS'], ['TX', 'TX']], @prev_state) %> 
    <%= select_tag :city_search, options_for_select([['Select a city', 0],['----------', 0],['Mandeville', 'Mandeville'],['Covington', 'Covington']], @prev_city) %> 

    <%= submit_tag "Go" %> 

<% end %> 
<table class="table table-striped table-bordered span8 table-condensed" id="articles_table"> 
    <thead class="header"> 
    <tr> 
     <th>ID</th> 
     <th>Title</th> 
     <th>Description</th> 
     <th>Created_At</th> 
    </tr> 
    </thead> 
    <tbody> 
    <%= render @articles %> 
    </tbody> 
</table> 

_article.html.erb

<tr> 
    <td> <%= article_counter +1 %> </td> 
    <td> <%= article.Title %> </td> 
    <td> <%= article.Description %> </td> 
    <td> <%= article.Created_At %> </td> 
</tr> 

article.rb

class Article < ActiveRecord::Base 
    belongs_to :state 


def self.city_search(city_search) 
    if city_search 
     where('City LIKE ?', "%#{city_search}%") 
    else 
     scoped 
    end 
end 
def self.state_search(state_search) 
    if state_search 
     where('State LIKE ?', "%#{state_search}%") 
    else 
     scoped 
    end 
end 

如果我需要發佈更多的代碼或更多信息,請讓我知道。任何可以幫助我的東西都會很棒。

+0

你有沒有找到任何解決方案呢? – MrYoshiji

+0

我還沒有嘗試過答案。今天我會回到家@MrYoshiji – jackadanos

回答

1

看完本網站後: http://apidock.com/rails/ActionView/Helpers/FormOptionsHelper/collection_select

我發現我其實並不需要爲州和城市建立模型。我需要做的就是創建一個collection_select,從我的Articles表中選擇Distinct States。這裏是什麼樣子:

<%= collection_select :article, :state, Article.select(:state).uniq.order('state ASC'), :state, :state, {:prompt => 'Select a State'},{:name => "state_search"} %> 

因此,所有我需要做的就是建立類似網站collection_select說,並添加Article.select(:狀態).uniq.order(「狀態ASC」)作爲我的收藏從我的Articles表中選擇uniq狀態。

2

值得考慮看看

http://api.rubyonrails.org/classes/ActionView/Helpers/FormOptionsHelper.html

我覺得狀態,你可以做這樣的事情

<%= collection_select :state_id, State.all, :id, :name, multiple: true, :prompt => "Please Select" %> 

現在可能不準確,但其如何IM在我的應用程序做它,它工作(雖然國家而不是國家)

+0

我沒有使用f.collection_select,因爲我所有的其他人都不使用f,而是嘗試使用只是collection_select,但它返回錯誤**未定義的方法'map': ID:符號**。你知道爲什麼嗎? – jackadanos

+0

對不起,我不應該使用f,那是因爲我在當時正在做的工作中將f傳遞給我的塊。你的狀態模型是否充滿了預先填充的數據? – Richlewis

+0

不是。我是否需要手動填充它,或者有沒有辦法讓它始終由​​文章表中的狀態填充? – jackadanos