【发布时间】:2014-03-21 03:33:32
【问题描述】:
我有一个表格可以为你最喜欢的图片投票:
<%= 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 %>
然后我想添加列: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 并将其传递给新模型创建。
我认为我的imagevote_params 中不应包含:voted_id,因为它不是由用户提交的。
嘭。
更新:这是我目前的日志
在 2014 年 3 月 20 日 19:32:20 +0000 开始为 127.0.0.1 发布“/imagevotes” ImagevotesController#create as HTML 处理 参数:{"utf8"=>"✓", "authenticity_token"=>"2FU9X/VJ40UnH70QPy/Iq0Voqo58p5KdcD1B0Q5st0c=", "imagevote"=>{"collection_id"=>"3", "voter_id"=>"4", "miniature_id"=>"10"}, "commit"=>"投票"} 用户负载 (0.3ms) SELECT "users".* FROM "users" WHERE "users"."id" = 4 ORDER BY "users"."id" ASC LIMIT 1 完成 404 Not Found in 4ms
ActiveRecord::RecordNotFound(找不到没有 ID 的集合): app/controllers/imagevotes_controller.rb:17:in `create'
【问题讨论】:
-
你可以在创建方法时发布参数吗?
标签: ruby-on-rails ruby-on-rails-4