为什么没有传递Photo Id来创建动作?

时间:2013-06-08 01:25:48

标签: ruby-on-rails

我正在为照片实施喜欢,并且ID没有被传递。我不知道为什么。有人可以解释一下原因吗?我觉得这会帮助我更好地理解铁轨。

点击后,我收到此错误:“找不到没有ID的照片”

在照片展示页面上,我有这个:

<%= form_for(@photolike, :url => {:controller => :photolikes, :action => 'create'}) do |f| %>
<%= f.hidden_field :photo_id, :value => @photo.id %> 
<%= f.submit "like", class: "btn postbtn right" %>
<% end %>

这是照片的控制器

def show
if user_signed_in?
 @comment = current_user.sent_photocoments.new(params[:photo_comment])
 end
 @photo = Photo.find(params[:id])
 @photolike = Photolike.new
end

在photolikes控制器中,我有这个:

def create
 @photo = Photo.find(params[:id])
 @photolike = Photolike.new(:photo_id => @photo.id, :user_id => current_user.id)
 @photolike.addlike
 @photolike.save
 redirect_to @photo
end

2 个答案:

答案 0 :(得分:1)

def create
 @photo = Photo.find(params[:photolike][:photo_id])
 @photolike = Photolike.new(:photo_id => @photo.id, :user_id => current_user.id)
 @photolike.addlike
 @photolike.save
 redirect_to @photo
end

答案 1 :(得分:0)

您的提交正在提交标有photo_id的photo_id(在您的隐藏字段中)。因此,您的控制器需要通过params[:photo_id]而不是params[:id]来检索它。