如何在按下按钮时创建模型实例

时间:2016-02-25 16:44:22

标签: ruby-on-rails ruby

假设我有一个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很新,并且意识到我可能会错误地提出这个问题!

2 个答案:

答案 0 :(得分:1)

您在视图中没有Vote.create。你在控制器中做到这一点。

使用.erb文件vote_path中的相应helper创建一个按钮,然后传入poll_iduser_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>