我正在嘗試允許對我創建的Ruby on Rails博客中的帖子進行投票。我真的不想去插件或寶石路線,因爲我覺得我很接近。這裏是的情況:將帖子ID傳遞給posts/index.html.erb中的單獨控制器
我通過部分_post.html.erb在/posts/index.html.erb中顯示我的所有帖子。隨着每一個職位,我繪製下面的代碼投票按鈕:
<% remote_form_for [@post, Vote.new] do |f| %>
<%= f.hidden_field :ip_address, :value => "#{request.remote_ip}" %>
<%= submit_tag 'Me Too', :class => 'voteup' %>
<% end %>
它發送通過投票控制要求:
def create
@post = Post.find(params[:post_id])
@vote = @post.votes.create!(params[:vote])
respond_to do |format|
format.html { redirect_to @posts}
format.js
end
end
我得到的錯誤是Couldn't find Post without an ID
這是有道理的,因爲我是不在/posts/show.html.erb頁面上。
有沒有一種方法可以將post_id傳遞給/posts/index.html.erb視圖中的votes_controller(以及投票表中的post_id列)?
在'VotesController#create'中添加一些像'asdas'這樣的垃圾文本(只是爲了在調用該方法時導致錯誤)。然後投票。該錯誤將顯示正在接收的參數。這些參數顯示了什麼? – Zabba 2010-11-06 06:23:39
我在哪裏將垃圾文本放在方法中?就在第一行之前(@post行)? – bgadoci 2010-11-06 06:25:30
是的,在'def create'後面,在下一行添加'asdfasfsf'。這只是一個簡單的方法來查看控制器操作被調用的參數。當然,這裏有一個插件(不記得名字),但是這種方法效果不錯:) – Zabba 2010-11-06 06:31:01