【问题标题】:How to create an instance of a model upon button press如何在按下按钮时创建模型实例
【发布时间】:2016-02-27 23:04:23
【问题描述】:

假设我有一个用户、投票和投票模型。

我的用户是在注册时创建的,投票是通过用户可以访问的表单创建的。

在向用户显示特定投票后,当用户单击投票选项时,如何创建投票模型的新实例?

基本上,当用户单击一个按钮时,我想创建一个新的投票模型实例,该按钮将当前 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的方法是什么。

免责声明:我对 Rails 非常陌生,并意识到我可能错误地提出了这个问题!

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    您不会在视图中执行Vote.create。您在控制器中执行此操作。

    .erb 文件中使用适当的helper 创建按钮vote_path,并传入poll_iduser_idvalue。这将在您的视图中为您提供一个按钮,单击该按钮时,POST 将在您的 VoteController 上执行 create 操作,您将在其中执行对象实例化并保存。根据create 操作的结果,您可以从那里重定向到合适的位置。

    您需要返回 read 了解 Rails 如何使用 ERB 构建 HTML 文件以在浏览器中呈现。你的问题表明你还没有真正理解它。

    【讨论】:

      【解决方案2】:

      这解决了我的问题:

      <td><%= button_to '<' ,{:controller => 'votes', :action => 'create', :user_id => 1, :poll_id => @poll.id, :value => 0}, {:method => :post} %></td>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-07-24
        • 1970-01-01
        • 2021-09-24
        • 2012-11-02
        相关资源
        最近更新 更多