Rails通过表单正确传递id

时间:2012-02-25 21:49:34

标签: ruby-on-rails-3 forms

我只需要对这一点有一些清晰的思考。我有一个照片显示页面,用户可以点击“赞”为特定like创建新的photo记录。

在我的照片show.html页面上,我有以下表格:

<%= form_for :like, :url => likes_path do |f| %>
  <%= hidden_field_tag(:photo_id, @photo.id) %>
  <%= f.submit "Like" %>
<% end %>

当我点击表单时,我收到一条消息“无法找到没有ID的照片”:

Started POST "/likes" for 127.0.0.1 at Sat Feb 25 16:43:21 -0500 2012
Processing by LikesController#create as HTML
Parameters: {"commit"=>"Like", "authenticity_token"=>"cQnuAHb/f6Sgo3aB5xPKErx3joQTV+DHGs0w9vi13vM=", "utf8"=>"\342\234\223", "photo_id"=>"47"}
Completed 404 Not Found in 68ms

ActiveRecord::RecordNotFound (Couldn't find Photo without an ID):
  app/controllers/likes_controller.rb:8:in `create'

不确定为什么它似乎正确传递了photo_id,不是吗? 以下是我的likes_controller

def create
  @photo = Photo.find(params[:id])
  @like = Like.new(:photo_id => :photo_id, :user_id => current_user.id)
end

任何人都能看到我在这里做错了什么?感谢。

1 个答案:

答案 0 :(得分:1)

它应该与Photo.find(params[:photo_id])一起使用。

错误消息显示您使用Photo.find参数调用了nil,例如请求中没有参数id