不保存从link_to发送到创建操作的属性

时间:2013-05-19 13:32:06

标签: ruby-on-rails

我的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

1 个答案:

答案 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"

然后在你的控制器中你需要分别抓住这些参数。