Ruby on rails Rails创建方法:隐藏字段标记提交但不工作&;会话参数不工作

Ruby on rails Rails创建方法:隐藏字段标记提交但不工作&;会话参数不工作,ruby-on-rails,session,params,Ruby On Rails,Session,Params,我正在尝试提交以下表单(从show method视图),我有一个: 这是日志生成的内容: Started POST "/photos" for ::1 at 2015-07-03 21:17:10 -0400 Processing by PhotosController#create as HTML Parameters: {"utf8"=>"✓", "photo"=>{"title"=>"sdb", "image"=># <ActionDispatch::H

我正在尝试提交以下表单(从show method视图),我有一个:

这是日志生成的内容:

Started POST "/photos" for ::1 at 2015-07-03 21:17:10 -0400
Processing by PhotosController#create as HTML
Parameters: {"utf8"=>"✓", "photo"=>{"title"=>"sdb", "image"=>#    <ActionDispatch::Http::UploadedFile:0x007fe301a2ebf8 @tempfile=#<Tempfile:/var/folders/d8/hx2wgfwx7m77c6mjwx2pffcc0000gq/T/RackMultipart20150703-35083-rt86ai.png>, @original_filename="Screen Shot 2015-06-28 at 9.23.31 PM.png", @content_type="image/png", @headers="Content-Disposition: form-data; name=\"photo[image]\"; filename=\"Screen Shot 2015-06-28 at 9.23.31 PM.png\"\r\nContent-Type: image/png\r\n">, "item_id"=>"27"}, "commit"=>"Add"}
Can't verify CSRF token authenticity
Completed 404 Not Found in 1ms

ActiveRecord::RecordNotFound (Couldn't find Item without an ID):
  app/controllers/photos_controller.rb:13:in `create'
在帮助程序中调用方法:

def remember_item(item)
  cookies.permanent.signed[:item_id] = item.id
  session[:item_id] = item.id
end
我已经检查了会话变量,并且在会话中正确地传递了
:item\u id
。我尝试了以下方法:

def create
    @item = Item.find(session[:item_id])
    @photo = @item.photos.build(photo_params)
    redirect_to edit_photos_url, notice: 'Photo uploaded' if @photo.save
end
这也不起作用,产生以下错误:

Couldn't find Item without an ID

我真的很想让后者工作。建议?

项目id包含在照片参数中

@item = Item.find params[:photo][:item_id]

应该给你想要的

如果仔细观察,您提交的实际上是

params
=> {photo: {item_id: 1, **other_attrs}}
params[:item_id]
=> nil
params[:photo][:item_id]
=> 1
这是因为
item\u id
在您的表单中作为帮助者,表单帮助者认为它是
photo
的属性

Couldn't find Item without an ID
@item = Item.find params[:photo][:item_id]
params
=> {photo: {item_id: 1, **other_attrs}}
params[:item_id]
=> nil
params[:photo][:item_id]
=> 1