我试图建立一个梦幻足球网站,让用户输入他们联赛的设置,并获得可用球员的推荐。我创造了一个普通的红宝石对象" 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
答案 0 :(得分:0)
您需要draft
参数,但它不在表单中(仅draft_type
文本字段和number_of_teams
数字字段)。为draft
参数添加另一个表单控件,或者不需要它。 (或者,我想,从会话或其他任何东西注入它。)
编辑:查看你的github代码,
def initialize(number_of_teams, draft_type)
您的模型仅包含两个参数;为什么.require(:draft)
?