【发布时间】:2016-10-15 21:58:19
【问题描述】:
我有一个名为 Tasklist 的对象,它有很多任务。很简单。但任务列表属于用户。我正在尝试从任务列表显示页面创建一个新任务,但我在弄清楚如何做到这一点时遇到了很多麻烦。我将发布代码并进一步解释我的问题。任何帮助都会很棒!谢谢。
任务列表控制器
def show
@tasklist = current_user.tasklists.find(params[:id])
@task = @tasklist.tasks.new
end
任务列表显示页面
<h1>page<%= @tasklist.name %></h1>
<%= form_for @task do |form| %>
<%= form.label :description %>
<%= form.text_field :description %>
<%= form.submit %>
<% end %>
任务控制器
def create
current_user.tasklists.tasks.create(task_params)
end
private
def task_params
params.require(:task).permit(:description)
end
这是我尝试从显示页面创建对象后的错误。
## ERROR
NoMethodError in TasksController#create
undefined method `tasks' for #<Tasklist::ActiveRecord_Associations_CollectionProxy:0x007faa4263b520>
def create
current_user.tasklists.tasks.create(task_params)
end
【问题讨论】:
-
一些提示(我是初学者,而不是在我的电脑前): - 您需要在任务控制器中明确哪些任务列表属于新任务创建操作 - 在您的任务列表视图中您正在提交用于创建当前控制器/模型的子级的表单。那么你的表单必须更加明确并指向任务控制器(不确定是否适用,但你可以检查嵌套表单)
标签: ruby-on-rails ruby associations