将变量传递给rails中的url

时间:2015-07-14 08:07:44

标签: ruby-on-rails ruby-on-rails-4

我正在传递变量:

new_sub_request_path(request_id:@request.id)

所以我得到这个网址:

http://localhost:3000/sub_requests/new?request_id=1

在我的控制器中,我想分配那个request_id:

@sub_request = SubRequest.new(sub_request_params)
@sub_request.request_id = params[:request_id]

并定义了我的强参数:

def sub_request_params
   params.require(:sub_request).permit(:description, :diagnos, :price, :payment, :request_id)
end

但是在保存后我有空的request_id属性,所以似乎没有分配。我做错了什么?

编辑: 检查控制台中的参数表明我只有我的表格中的那些属性。

EDIT2:

 def create
    @sub_request = SubRequest.new(sub_request_params)
    @sub_request.request_id = params[:sub_request][:request_id]
    respond_to do |format|
      if @sub_request.save
        format.html { redirect_to @sub_request, notice: 'Sub request was successfully created.' }
        format.json { render :show, status: :created, location: @sub_request }
      else
        format.html { render :new }
        format.json { render json: @sub_request.errors, status: :unprocessable_entity }
      end
    end
  end

1 个答案:

答案 0 :(得分:1)

您必须为request_id保存在sub_requests表格中定义如下内容。

create方法中添加此行

@request = Request.find(params[:request_id])并执行

@sub_request.request_id = @request.id

您只需在 表单 中添加hidden_field,如下所示

<%= f.hidden_field :request_id, :value => @request.id %>

并确保您在:request_id

中允许sub_request_params