2013-09-21 96 views
0

當我創建一個skid時,我試圖獲取用戶輸入的值,以便我可以多次創建該記錄。將輸入文本字段的值傳遞給控制器​​

in _form.html.erb是我所有代碼的位置。而在new.html.erb是我打電話與形式:

<%= render 'form' %>

這裏是形式,我試圖訪問的一段代碼:

<%= f.label :skid_count %> 
    <%= f.number_field :skid_count, :value => '1', :required => 'required', :pattern => ValidationValues.c_integer, :placeholder => ValidationValues.p_integer %> 

在控制器我試圖做到這一點:

def create 
    @skid = Skid.new(params[:skid]) 

    count = params[:skid_count].to_i 

    # Create record in the database, and return an appropriate message 
    respond_to do |format| 
     if @skid.save 
     for i in 1..count 
      Skid.new(params[:skid]).save 
     end 

     format.html { redirect_to @skid, notice: 'Skid was successfully created.' } 
     format.json { render json: @skid, status: :created, location: @skid } 
     else 
     format.html { render action: "new" } 
     format.json { render json: @skid.errors, status: :unprocessable_entity } 
     end 
    end 
    end 

由於某種原因,計數變量不拿起數字,如果我硬編碼,並在那裏把3,它只是4次創造紀錄如預期的那樣,但如果我嘗試根據用戶輸入的內容獲取數字值,如上所示,它不起作用。它每次只創建1條記錄。

有沒有理由不能訪問該參數?

+0

檢查日誌,並請張貼參數與請求 – nachbar

+0

@nachbar我不知道該怎麼做......請你解釋一下嗎?我很新ruby和rails ... – Bojan

+0

如果您在開發模式下運行測試服務器,日誌將位於日誌的子目錄中您的Rails應用程序,並且將成爲development.log該文件將爲每個請求列出所有傳遞給Rails請求的參數以及時間戳。另外,如果您在終端窗口中運行服務器,參數也會顯示在那裏,但可能會過快而無法看到它們。 – nachbar

回答

0

我已經得到以這種方式從屬性值來解決這個問題:

count = params[:skid]["skid_count"] 

我希望這可以幫助別人無意中發現同樣的問題。

0

看起來您在記錄保存之前設置了變量,因此沒有用於設置該變量的記錄。如果你將線路向下移動幾個空格,它應該可以工作。

def create 
    @skid = Skid.new(params[:skid]) 

    # Create record in the database, and return an appropriate message 
    respond_to do |format| 
    if @skid.save 
    count = params[:skid_count].to_i # if the record saves, create variable with the new params 
    for i in 1..count     # do your magic 
     Skid.new(params[:skid]).save 
    end 
+0

不,它仍然沒有工作,它仍然只創建1條記錄 – Bojan

0

我會擴展你的答案來解釋原因。

當您通過form_for helper構建字段時,它會自動將其範圍縮小到param散列中的模型屬性下。

params[:skid][:skid_count]將工作以及

,如果你想:skid_count是params哈希表外(如不以軌道的新版本引發禁屬性,你可以只用number_field_tag(:skid_count)這將它們是建立它可用於您的控制器params[:skid_count]

相關問題