2016-11-17 40 views
0

我想創建這樣一種形式:Ruby on Rails和JSON創建選擇形式

<select> 
<option> 
</select> 

與Ruby on Rails的,但它是個國家(還有很多世界各國的哈哈),所以我不想在我的觀點上寫每個人,所以我想把一個JSON文件與所有國家,並在我的選項(每種方法可能)獲取主題

我不知道在哪裏我必須把我的json文件放在我的rails應用程序中,以及如何在我的視圖中調用它,

有人可以幫助 我 ?

+0

你需要'select_tag'和'options_for_select'。這些是rails方法。閱讀他們的文檔。 –

+0

看到這個問題的幫助:http://stackoverflow.com/questions/12595327/rails-select-from-json-array – axlj

+0

謝謝塞爾吉奧,但我只是想知道我必須把我的json文件放在我的應用程序? (哪個文件夾)以及我如何請求它? –

回答

1

將您的JSON文件放在最簡單的位置與您的控制器位於同一目錄中 - 儘管重複執行此類操作會很快使您的控制器文件夾變得混亂。

一旦你這樣做,你可以從你的控制器這樣的閱讀:

file = File.read('./countries.json') 
countries = JSON.parse(file) 

,然後國家映射到的數據類型options_for_select預期。

一旦你有這個工作,我會建議做一個助手,知道如何讀取json文件,緩存它的數據並返回它。將json文件存儲在與助手相同的目錄中。在控制器中引用助手。

另請注意:JSON寶石是必需的。

在你的助手,你要創建這個方法:

def countries_for_select 
    file = File.read('./countries.json') 
    countries = JSON.parse(file) 
    countries.map {|c| [ c['country']['label'], v['country']['country_code'] ] }) 
end 

.map從國家JSON對象轉換田間地頭到[[name,key], ...]陣列options_for_select預期。

每表單助手的Rails Documentation,爲select_tag語法看起來像這樣

<%= select_tag(:country, options_for_select(...)) %> 

但我們已經創建了助手countries_for_select以匹配select_tag期待的格式。所以你需要做的就是:

<%= select_tag(:country, countries_for_select) %> 
+0

謝謝你的回答!這是有義務把這個在控制器?我不能把它放在視圖中? –

+1

你絕對需要這個(至少)在你的控制器。但我建議將邏輯的肉類轉化爲助手類。 – axlj

+1

@AntoninMrchd:__definitely__不能查看。 –