我的index.html.erb中有以下link_to。每当我点击链接时,它都会在retrieval_requests表中创建一条新记录,但由于某种原因,user_id和package_id没有保存。
我不确定如何解决这个问题。我将不胜感激任何帮助。
感谢。
index.html.erb
.
.
<%= link_to "Retrieve this package", retrieval_requests_path(user_id: current_user.id, package_id: item.package.id), :method => :post %>
.
.
retrieval_requests_controller.rb
class RetrievalRequestsController < ApplicationController
def index
@items = Item.where(:user_id => current_user.id)
end
def create
@retrieval_request = RetrievalRequest.new(params[:retrieval_request])
if @retrieval_request.save
redirect_to retrieval_requests_path, notice: "Successfully created retrieval request."
else
render :new
end
end
end
答案 0 :(得分:1)
由于您使用的是链接而非表单,因此您必须使用各个参数创建记录。
因此,不要使用params[:retrieval_request]
(不存在),而是使用params[:user_id]
和params[:package_id]
。
将参数传递给链接助手时,例如:
retrieval_requests_path(user_id: 3, package_id: 26)
根据您设置路线的方式,它将创建一个类似于以下内容的网址:
"/retrieval_requests/3/26"
# or with no user_id or package_id set in routes:
"/retrieval_requests?user_id=3&package_id=26"
然后在你的控制器中你需要分别抓住这些参数。