【发布时间】:2013-11-06 13:59:33
【问题描述】:
我有一个Category 模型has_many Skills。
我有一个页面,我希望用户能够通过文本框(只是 skill 的名称)将单个新 skill 添加到选定的 category,同时列出页面上所有现有的categories 和skills 中的categories。
我目前可以显示所有categories 及其包含的skills,但我不确定如何制作,因此用户只能创建一个新的skill 而无法编辑所有其他skills 那个belongs_to 一个category。
这是我目前拥有的代码:
控制器:
def show
. . .
#needed for showing all categories
@categories = current_user.categories
#needed to show a blank skill when editing a category
@skills = []
@categories.each do |cat|
@skills << cat.skills.build
end
. . .
end
查看:
<% @categories.each do |category| %> # I skip most of the code related to formatting
<%= simple_form_for(category) do |f| %>
<%= f.fields_for :skills do |s| %>
<div class="inputs">
<%= s.input :name %>
<%= s.hidden_field :category_id %>
<%= s.hidden_field :id %>
</div>
<% end %>
<%= f.button :submit %>
<% end %>
<% end %>
它最终会产生一个如下所示的表单:
我尝试将f.fields_for :skills 更改为f.fields_for category.skills.last(因为category.skills 中的最后一个对象是在控制器中创建的新技能),这会导致一个空白文本框看起来像我需要的:
但是当我提交表单时,我收到一个“param not found: category”错误(指向我的 params.require(:category)...我的 Category 控制器中的行。
如果我使用:skills 的符号,我不确定为什么表单可以工作,但是当我使用category.skills.last(甚至category.skills.each)时,我会得到一个不同的错误:Enumerator:Class 的未定义方法 `model_name')。
我做错了什么?
【问题讨论】:
-
分享你的服务器日志。
标签: ruby-on-rails forms ruby-on-rails-4 simple-form