我有兴趣制作一个类似于 SO 的功能,其中提出问题的用户可以从响应列表中选择一个答案,但被困在如何从控制器的角度处理点击事件。
目前,我有模型Question,其中has_many answers. 另外,我做了一个Selection模型,用来象征答案的选择,每个Question人只能has_one选择答案。
我将每个问题的答案与问题show操作中的问题一起呈现。在我的_answer部分中,我想放置以下逻辑:“如果提出问题的用户已登录,如果相关selection人员answer_id已经存储了该答案,他可以看到“取消选择”答案的链接(换句话说,标记这个答案是以前选择的),否则他可以“选择”将答案存储在 中的答案answer_id。selection(我应该提到我从Rails 教程这里改编了下面的大部分代码,我(不幸的是)没有扎实的理解如何使用POST匹配或分配属性给实例变量)
<% if current_user?(answer.question.user) %>
<% if current_user.selections.where(:answer_id => answer.id) == answer.id %>
<%= link_to "unselect", selections_path(:selection => {:answer_id => nil}), :method => :post %>
<% else %>
<%= link_to "select", selections_path(:selection => {:answer_id => answer.id}), :method => :post %>
<% end %>
<% end %>
我的路障在控制器中,如果用户通过“选择”链接选择新答案,我会被困在如何使用the create方法将@selection变量分配给新的变量。answer_id任何帮助或任何关于如何编写点击事件的指南将不胜感激。谢谢!