2013-09-26 30 views
1

在我的Rails應用程序中,我有一個text_field,它在按下按鈕後將字符串值插入到db中。但我想用text_area替換text_field,並將每一行作爲新記錄插入到我的數據庫中。我正在使用simple_form。Rails從DB中的text_area插入每行

_form 
<%= simple_form_for @keyword do |f|%> 
<%=f.input :name%> 
<%=f.button :submit%> 
<%end%> 

controller 
@keyword = Keyword.new(keyword_params) 
if @keyword.save 
redirect_to :back 
end 

我幾乎知道我必須做什麼,但是我必須在哪裏解析列表到控制器或模型?

謝謝。

+0

顯示你的代碼,請 – dax

回答

1

換行符在您的字符串上表示爲\n。知道這一點,在你的控制器上,你可以得到text_area參數,類似於params[:text_area],並使用String#split方法根據換行符的數目將這個String轉換爲一個n位置的數組。

string_array = params[:text_area].split("\n") 
# do your stuff with the array of strings 
+0

是的,這就是這個想法。或者可能在像'value = string_array [0]','value = string_array [1]'等變量中設置它們。但是這樣你就必須知道你總會有多少個字符串。 – MurifoX

+0

在我的創建方法中,我如何獲得參數,我添加了代碼,並收到錯誤消息,說明拆分方法未知,因爲我沒有得到任何參數。我所做的是添加你的行,然後做一個循環,並從文本字段中取出每一行,並將其添加到一個變量並保存。 – user2502761

+0

那麼,你必須將':text_area'改爲你表單上的實際值。 – MurifoX

0

爲了解決這個問題,我這樣做:

keyword_array = keyword_params[:name].split("\r\n") 

def keyword_params 
    params.require(:keyword).permit(:name) 
end