假设我有一个User,Poll和Vote模型。
我的用户是在注册时创建的,并且通过用户有权访问的表单创建民意调查。
在向用户显示特定投票时,如何在用户点击投票选项时创建投票模型的新实例?
基本上我想在用户单击将当前user_id和poll_id作为参数传递的按钮以及所选选项的值时创建新的投票模型实例。
我的投票模型3属性:poll_id,user_id和value。
poll_id和user_id是poll和user表的外键,value只记录所选的poll选项。
我尝试通过选择按钮调用Vote.create来尝试实现此目的:
<a class="btn-floating btn-large waves-effect waves-light hoverable red left" href="<%= poll_path(@next) %>" >
<i class="material-icons">arrow_back</i>
<%= Vote.create %>
</a>
这就是我在投票控制器内访问投票创建方法中的poll_id和user_id的方法
@current_user ||= User.find(session[:user_id]) if session[:user_id]
@vote.user_id = @current_user
@current_poll ||= Poll.find(session[:poll_id]) if session[:poll_id]
@vote.poll_id = @current_poll
基本上,我想知道正确的轨道式是什么样的。
免责声明:我对rails很新,并且意识到我可能会错误地提出这个问题!
答案 0 :(得分:1)
您在视图中没有Vote.create
。你在控制器中做到这一点。
使用.erb
文件vote_path
中的相应helper创建一个按钮,然后传入poll_id
,user_id
和{{1} }。这会在您的视图中为您提供一个按钮,当您点击该按钮时,value
将对您POST
上的create
操作执行对象实例化并保存。从那里,您可以根据VoteController
操作的结果重定向到适当的位置。
您需要返回并read了解Rails如何使用ERB构建HTML文件以便在浏览器中呈现。你的问题表明你还没有真正弄清楚它。
答案 1 :(得分:0)
这解决了我的问题:
<td><%= button_to '<' ,{:controller => 'votes', :action => 'create', :user_id => 1, :poll_id => @poll.id, :value => 0}, {:method => :post} %></td>