我有一张表格可以投票给你最喜欢的图像。
<%= form_for(@imagevote) do |f| %>
<% @miniature.collections(:photo).each do |collection| %>
<% if collection.photo.exists? %>
<td><div class="photo1">
<%= link_to image_tag(collection.photo.url(:thumb), :retina => true), collection.photo.url(:original), :retina => true, :class => "image-popup-no-margins" %>
<%= f.radio_button(:collection_id, collection.id) %>
<%= f.hidden_field :voter_id, :value => current_user.id %>
<%= f.hidden_field :voted_id, :value => collection.user_id %>
<%= f.hidden_field :miniature_id, :value => @miniature.id %>
<p>Painted by <%= link_to collection.user.name, collection.user %></p>
</div></td>
<% end %>
<% end %>
<%= f.submit "Vote" %>
<% end %>
所有内容都正确提交,但hidden_field :voted_id
除外,current_user.id
由于某种原因重复:voted_id
。
更新
我尝试以其他用户身份登录,似乎current_user.id
没有重复:voted_id
,而是它总是“7”,这是:我之前用来测试它的user_id 。现在以4号用户身份登录,它仍然以7发送<%= link_to "See more and change your vote.", edit_imagevote_path(:miniature_id => @miniature, :voter_id => current_user.id) %>
。我迷路了。
imagevotes视图的链接如下:
class ImagevotesController < ApplicationController
respond_to :html, :js
def new
@imagevote = Imagevote.new
@miniature = Miniature.find(params[:miniature_id])
end
def edit
@imagevote = Imagevote.find_by_miniature_id_and_voter_id(params[:miniature_id],params[:voter_id])
@miniature = Miniature.find(params[:miniature_id])
end
def create
@imagevote = Imagevote.new(imagevote_params)
if @imagevote.save
flash[:success] = "Vote registered"
redirect_to :back
else
flash[:success] = "Vote not registered"
redirect_to :back
end
end
def update
@imagevote = Imagevote.find(params[:id])
if @imagevote.update_attributes(imagevote_params)
flash[:success] = "Vote changed."
redirect_to :back
else
redirect_to :back
end
end
private
def imagevote_params
params.require(:imagevote).permit(:collection_id, :voter_id, :voted_id, :miniature_id)
end
end
这是我的图像投票控制器
{{1}}
答案 0 :(得分:1)
您只有一个@imagevote
对象,但是您正在输出集合循环中的隐藏字段,因此您将在模型中引用相同属性的多个字段:如果您检查生成的html ,您应该看到多个具有相同name
属性的隐藏字段。
浏览器处理具有相同名称的多个输入的方式意味着:voted_id
的参数将始终是最后一个集合中的:user_id
。
答案 1 :(得分:0)
很难说,因为你没有提供你的模型,你的循环代码被剥离了。
我猜你会绕过属于collection
的{{1}}。在这种情况下,current_user
始终与current_user.id
相同。您可能希望看到collection.user_id
?