我正在传递变量:
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
答案 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