我今天开始学习Ruby on Rails,但我收到了这个错误:
在TasksController #create中创建ActiveModel :: ForbiddenAttributesError错误消息显示错误已打开' Task.create params [:task]'
def create
Task.create params[:task]
redirect_to :back
end
控制器:
class TasksController < ApplicationController
def index
@tasks = Task.all
end
def create
Task.create params[:task]
redirect_to :back
end
end
指数:
<h1>Task</h1>
<%= form_for Task.new do|f| %>
<%= f.label :task %>
<%= f.text_field :task %>
<%= f.submit %>
<% end %>
<ul>
<% for task in @tasks %>
<li><%= task.task %></li>
<% end %>
</ul>
答案 0 :(得分:1)
我也遇到了这个问题。替换以下行: params.require(:任务).permit(:任务)
class TasksController < ApplicationController
def index
@tasks = Task.all
end
def create
Task.create task_params
redirect_to :back
end
private
def task_params
params.require(:task).permit(:task)
end
end
答案 1 :(得分:0)
这是一个由强大的参数解决的问题。我不会给你一个关于强大的障碍的教训,它已被谈到死亡,但基本上你需要告诉你的控制器允许某些参数。 rails guides奇妙地解释了它:
4.5强参数使用强参数时,禁止在活动模型批量分配中使用动作控制器参数 直到他们被列入白名单。这意味着你必须做一个 有意识地选择允许批量更新的属性和 从而防止意外暴露不应暴露的东西。
那就是说,我不知道你所有的Task
属性,但它看起来像这样:
class TasksController < ApplicationController
def index
@tasks = Task.all
end
def create
Task.create task_params
redirect_to :back
end
private
def task_params
params.require(:task).permit(:name, :title, :body, :otherstuff)
end
end