在Rails 4上,我無法從控制器的URL中獲取參數。Ruby on Rails:從網址獲取參數
我有兩個has_many和belongs_to關聯的模型,我們稱它們爲Books和Pages。我想創建一個新的頁面記錄,並將其鏈接到Book模型,具體取決於用戶點擊「創建」按鈕時用戶訪問的是哪本書(例如,如果用戶在侏羅紀公園的書頁上並單擊「創建, 「我想創建一個與侏羅紀公園書有關的新頁面)。
這裏是我的觀點的創建鏈接:
<%= link_to "Create page", new_page_path(:book => @book.id), :id => "submit-button" %>
這裏是我的控制器:
def new
@page = Page.new
end
def create
@book = Book.find(params[:book])
@page = Product.new(page_params)
@page.book_id = @book.id
if @page.save
flash[:success] = "Page Submitted!"
redirect_to @book
else
render 'new'
end
end
我收到以下錯誤:
"ActiveRecord::RecordNotFound in PagesController#create - Couldn't find Book without an ID"
我是完全這樣做錯誤?我知道Rails 4改變了params的工作方式,這與獲取URL參數的語法是一樣的,所以也許這就是導致這個問題的原因。
編輯:我也嘗試從'新'作爲變量獲得params,然後使用它作爲id,但我得到相同的錯誤消息。
嗨。在Rails4中,strong_parameters是默認值。所以你應該允許你從網址或表單中獲得每個參數。在你的情況下,你應該有一個'book_params',這個book_params可以和find一起使用。 – Zoltan
'@book = Book.find(book_params)' 下'private'在控制器 '高清book_params PARAMS [:書] .permit(:身份證,:名稱) end' – Zoltan