无法在控制器中创建普通的旧ruby对象

时间:2014-07-10 01:57:38

标签: ruby-on-rails ruby controller

我试图建立一个梦幻足球网站,让用户输入他们联赛的设置,并获得可用球员的推荐。我创造了一个普通的红宝石对象" Draft"这有选择最佳球员的逻辑。我尝试根据他们输入的设置为每个访问者创建一个新草稿,但我无法弄清楚如何让控制器使用独特的设置创建一个新的ruby实例。

我尝试为草稿对象渲染表单,以便在用户选择草稿设置后,草稿将开始并显示建议。

我已将根设置为#new,以便可以创建新草稿。我尝试渲染一个表单,但控制器抛出错误:" param丢失或值为空:draft"。

以下是我的控制器的样子:

def new
    @draft = Draft.new(draft_params)
end

private

  def draft_params
    params.require(:draft).permit(:draft_type, :number_of_teams)
  end

params以下列形式正确链接:

<%= form_for(@draft) do |f| %>

  <div class="form-group">
    <%= f.label :draft_type %>
    <%= f.text_field :draft_type, :class => 'form-control' %>
  </div>

  <div class="form-group">
    <%= f.label :number_of_teams %>
    <%= f.number_field , :class => 'form-control', %>
  </div>

  <%= f.submit :class => 'btn btn-info' %>

<% end %>

如何让我的新草稿正确显示? 请帮助我找到我做错的事情!!

如果您想了解更多内容,请访问github回购: https://github.com/Cheex11/drafter

1 个答案:

答案 0 :(得分:0)

您需要draft参数,但它不在表单中(仅draft_type文本字段和number_of_teams数字字段)。为draft参数添加另一个表单控件,或者不需要它。 (或者,我想,从会话或其他任何东西注入它。)

编辑:查看你的github代码,

def initialize(number_of_teams, draft_type)

您的模型仅包含两个参数;为什么.require(:draft)