在 Rails 4 上,我无法从控制器中的 URL 获取参数。
我有两个具有 has_many 和 belongs_to 关联的模型,我们称它们为 Books 和 Pages。我想创建一个新的页面记录并将其链接到图书模型,具体取决于用户单击“创建”按钮时正在访问的图书(即,如果用户在侏罗纪公园图书页面上并单击“创建, “我想创建一个与侏罗纪公园图书相关联的新页面)。
这是我认为的创建链接:
<%= 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
我收到以下错误:
“PagesController#create 中的 ActiveRecord::RecordNotFound - 找不到没有 ID 的书”
我这样做完全错了吗?我知道 Rails 4 改变了 params 的工作方式,这与获取 URL 参数的语法相同,所以也许这就是导致这个问题的原因。
编辑:我也尝试从“新”中获取参数作为变量,然后将其用作 id,但我得到了相同的错误消息。