0
這是一個觀點摘錄 -導軌 - 未能從新傳遞參數的控制器創建
<%= @user.id %> is the user id
<%= @book.id %> is the book id
<div class="field">
<%= f.select :contribtype, options_for_select(Contribution::CONTRIB_TYPES) %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我還通過了用戶的參數,並從以前的觀點的書,這樣我有
http://localhost:3000/contributions/new?book_id=1&user_id=5
作爲表單的URL。正確的user_id和book_id顯示在頁面上。
我在控制器中執行以下 -
def new
@user = User.find_by_id(params[:user_id])
@book = Book.find_by_id(params[:book_id])
@contribution = Contribution.new(params[book_id: @book.id, user_id: @user.id])
end
def create
@contribution = Contribution.new(contribution_params)
....
...但USER_ID和book_id未在對象被創建時,它被捕獲。我沒有收到任何錯誤,數據根本就沒有在新對象中設置。我應該通過不同的參數創建行爲嗎?
我不能接受再回答7分鐘,但這已經爲我解決了。我是否據此推斷,即使您已經在控制器中定義了變量,創建操作將僅使用在提交的表單中的字段中捕獲的參數? – RADan 2014-09-10 09:15:53
是的,因爲你的實例變量不會在請求之間持久化,http無狀態(除非你使用cookies/session) – apneadiving 2014-09-10 09:16:55
Gotcha。非常感謝您爲我清除:) – RADan 2014-09-10 09:21:38