我是一個軌道新手,有一個簡單的問題: 我有兩個表,勇氣,屬於在變量表使用外鍵
在單個變量的頁面中的對象,我把下面的鏈接:
<%= link_to 'Novo Valor', :controller => "valors", :action=> 'new', :id=>@variable%>
所以URL顯示爲:http://localhost:3000/valors/new?id=1
但我怎麼利用價值的URL,以創造與外鍵variable_id = 1一個新的勇氣對象表示的ID?
我是一個軌道新手,有一個簡單的問題: 我有兩個表,勇氣,屬於在變量表使用外鍵
在單個變量的頁面中的對象,我把下面的鏈接:
<%= link_to 'Novo Valor', :controller => "valors", :action=> 'new', :id=>@variable%>
所以URL顯示爲:http://localhost:3000/valors/new?id=1
但我怎麼利用價值的URL,以創造與外鍵variable_id = 1一個新的勇氣對象表示的ID?
喜歡的東西:
# Your action
def new
@valor = Valor.new(:variable_id => params[:id])
end
# Then in the view:
<%= form_for(@valor) do |f| %>
...
<% end %>
你也可以簡化操作,使之更加靈活的通過傳遞完整的對象參數以同樣的方式create
和update
作品,如:
def new
@valor = Valor.new(params[:valor] || {})
end
# making your link:
<%= link_to 'Novo Valor', :controller => "valors", :action=> 'new', :valor => { :variable_id => @variable } %>
這使生成的URL有點醜陋,但可以讓您將任意創建參數傳遞給新記錄,而不是在控制器中手動構建它們。
側面說明,因爲使用的是標準足智多謀的路線,你可以通過使用命名的路由新Valor
簡化鏈接生成:
<%= link_to 'Novo valor', new_valor_path(:valor => { :variable_id => @variable }) %>
正如numbers1311407說,存儲ID或控制器中的實例變量@variable = params[:id]
或@variable = whatever.you.like
中的整個對象。然後你就可以訪問這個變量隨時:
valor = Valor.new
valor.variable = @variable
valor.save
額外的東西:你可以使用是inflections.rb處理(勇士 - > VALORES),而不是(勇士 - > valors)
變形的建議是相當不錯的。 – ANeves
沒不工作,我需要的是一種方法來訪問新的valor頁面上的variable_id,但是當我在新的valor頁面中調用@variable或類似的函數時,它返回nil值 –
您將'@ variable'傳遞到新頁面作爲'id',將它作爲'params [:id]'在新的操作中使用。我只是用它來構建新的「Valor」對象。如果你想在新動作中將它作爲'@ variable'存儲,'@variable = params [:id]'會做到這一點。 – numbers1311407
感謝params [:id]引用,這足以獲得新的勇氣頁上的變量id,但我仍然無法創建一個新的對象與該引用,我不明白爲什麼 –