我有一张表格可以投票给你最喜欢的图片:
<%= form_for(@imagevote) do |f| %>
<% @miniature.collections(:photo).each do |collection| %>
<% if collection.photo.exists? %>
<%= 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) %>
<% end %>
<% end %>
<%= f.hidden_field :voter_id, :value => current_user.id %>
<%= f.hidden_field :miniature_id, :value => @miniature.id %>
<%= f.submit "Vote", class: "btn btn-large btn-primary" %>
<% end %>
然后,我想添加collumn :voted_id
的值,该值应该是获得投票的collection.user
的ID。
我无法解决如何在我的控制器中执行此操作。
我目前拥有什么
def create
@imagevote = Imagevote.new(imagevote_params)
@collection = Collection.find(params[:collection_id])
@imagevote.voted_id = @collection.user_id
if @imagevote.save
flash[:success] = "Vote registered"
redirect_to :back
else
flash[:success] = "Vote not registered"
redirect_to :back
end
end
这给了Couldn't find Collection without an ID
。该表单清楚地提交了一个collection_id,我试图使用它来查找该集合,以便我可以使用该集合user_id
并将其传递给新模型创建。
我相信我的:voted_id
中不应该imagevote_params
,因为它不是由用户提交的。
伊克。
更新:这是我当前的日志
开始POST&#34; / imagevotes&#34;对于2014.0-20 19:32:20 +0000的127.0.0.1 由ImagevotesController处理#create as HTML 参数:{&#34; utf8&#34; =&gt;&#34;✓&#34;,&#34; authenticity_token&#34; =&gt;&#34; 2FU9X / VJ40UnH70QPy / Iq0Voqo58p5KdcD1B0Q5st0c =&#34;, &#34; imagevote&#34; =&gt; {&#34; collection_id&#34; =&gt;&#34; 3&#34;,&#34; voter_id&#34; =&gt;&#34; 4&#34 ;,&#34; miniature_id&#34; =&gt;&#34; 10&#34;},&#34;提交&#34; =&gt;&#34;投票&#34;} 用户负载(0.3ms)SELECT&#34;用户&#34;。* FROM&#34;用户&#34;用户&#34;。&#34; id&#34; = 4 ORDER BY&#34;用户&#34;。&#34; id&#34; ASC限制1 已完成404未在4毫秒内找到
ActiveRecord :: RecordNotFound(无法找到没有ID的集合): app / controllers / imagevotes_controller.rb:17:在'create&#39;
中答案 0 :(得分:1)
:collection_id
是:imagevote
的一部分。
您可以从params哈希中访问:collection_id
,如下所示:
@collection = Collection.find(params[:imagevote][:collection_id])
而不是
@collection = Collection.find(params[:collection_id])