2015-02-10 39 views
0

我有一個應用程序,我需要簡單的用戶輸入並使用一個值更新兩個模型。我一直在研究這麼多天,現在是時候得到一些幫助。我正在使用Rails 4.1。基於對許多類似問題的回答,我決定使用一個form_for helper和一個嵌套在其中的fields_for。這涵蓋了兩個模型,但我仍然留下了爲每個模型獲得正確值的問題。表單只有一個輸入,我需要爲這兩個模型捕獲該值。它適用於更新一個模型,但更新後的值不適用於其他模型。表格非常簡單。我正在更新Plan模型中的:qtydemanded字段,但我希望使用相同的值來更新Chart模型中的:value字段。我嘗試在Chart模型上設置value => @ product.qtydemanded,但在更新之前將:value字段設置爲等於Plan模型中現有的qtydemanded。它沒有從Chart模型的表單中捕獲更新後的值。如何爲Rails表格中的兩個模型設置兩個輸入的相同值

<%= form_for @product, url: update_plan_path do |p| %> 
<table> 
    <tr> 
    <td>Sku Number:</td> 
    <td><%= p.text_field :sku_number, :readonly => true %></td> 
</tr> 
<tr> 
    <td>Period:</td> 
    <td><%= p.text_field :period, :readonly => true %></td> 
</tr> 
<tr> 
    <td>Qtydemanded:</td> 
    <td><%= p.text_field :qtydemanded %></td> 
<%=fields_for @chart do |chart| %> 
    <td><%= chart.hidden_field :value %></td> 
<% end %> 
</tr> 
<tr> 
    <td><%= p.submit "Save" %></td> 
</tr> 
</table> 
<% end %> 

控制器也很簡單。那裏我沒有做任何超級複雜的事情。我只是在強大的參數上調用update_attributes。更新正在工作。它只是沒有正確的價值。當我提交表格時,Chart:value字段將更新爲Plan模型中舊的qtydemanded值。

def update_plan 
    @product = Plan.where('sku_number = ? and period = ?', params[:sku_number],params[:period]).first 
    @chart = Chart.where('sku_number = ? and period = ? and feature = "qtydemanded"',params[:sku_number],params[:period]).first 
    if @product.update_attributes(plan_params) 
     @chart.update_attributes(chart_params) 
     redirect_to(:action => 'show_product', :sku_number => @product.sku_number) 
     else 
     puts "There is an error" 
    end 
end 

private 

def chart_params 
    params.require(:chart).permit(:value) 
end 

路線也是,它只是傳遞sku_number和週期控制器找到正確的記錄簡單。

patch 'products/:sku_number/:period/update_plan' => 'products#update_plan', :as => :update_plan 

我可以看到,窗體被正確解釋,它是把輸入值成什麼我看來像陣列如計劃[qtydemanded]和圖表[值]。我試圖在控制器中獲取這樣的值:@ chart.update(:value => plan [qtydemanded])。返回值:值爲null。我認爲答案就是這樣,但我無法弄清楚。我已經嘗試了其他答案的無數變化,我沒有想法。我衷心感謝任何幫助。

回答

0

是否

if @product.update_attributes(plan_params) 
    chart_params[:value] = plan_params[:qtydemanded] 
    @chart.update_attributes(chart_params) 

解決您的問題?

+0

這個特定的答案沒有像所顯示的那樣工作,但我看起來應該有。不過,它讓我朝着正確的方向前進。最後工作的結果是@ chart.update(:value => plan_params [:qtydemanded]。謝謝你的幫助。我很滿意你正確回答了這個問題。我不太清楚爲什麼它不能像你一樣工作已經顯示它。 – attentionjay 2015-02-11 02:01:46

相關問題