Ruby on rails 缺少参数或值为空:活动Rails 4
当我尝试在我的应用程序中创建一个条目时,我得到Ruby on rails 缺少参数或值为空:活动Rails 4,ruby-on-rails,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 4,当我尝试在我的应用程序中创建一个条目时,我得到 ActionController::ParameterMissing in TodosController#create param is missing or the value is empty: activity 预期来源: def todo_params params.require(:activity).permit(:name, :due) end 这是我的要求: {"utf8"=>"✓", "authent
ActionController::ParameterMissing in TodosController#create
param is missing or the value is empty: activity
预期来源:
def todo_params
params.require(:activity).permit(:name, :due)
end
这是我的要求:
{"utf8"=>"✓",
"authenticity_token"=>"mR11T50dN8tm/q+S0fNd+mYYZBR6Xq4it4ujtEOmt/7RmA4TjzTKD//XmFU+UumpbmKcaj9DtG6noHOD2pwk2w==",
"todo"=>{"name"=>"Ezekiel",
"activity"=>"test....an 8th time"},
"commit"=>"Create Todo"}
我不确定这为什么不起作用,因为活动参数在请求中被清楚地传递了
这是控制器:
def create
@todo = Todo.create(todo_params)
end
def todo_params
params.require(:activity).permit(:name, :due)
end
最后,我的观点是:
<div class="reveal" id="ezekielTask" data-reveal>
<%= simple_form_for @todo do |f| %>
<%= f.input :name, :as => :hidden, :input_html => {:value => "Ezekiel"} %>
<%= f.input :activity %>
<%= f.button :submit %>
<% end %>
</div>
:hidden,:input_html=>{:value=>“以西结”}%>
我的rails应用程序的这一部分是一个待办事项列表,它显示得很好,我可以通过控制台添加条目,这种方式不起作用,我不知道为什么。它正在正确地传递数据,只是没有接受它。您需要将强参数方法更改为require
todo
,然后接受:name
和:activity
参数
def todo_params
params.require(:todo).permit(:name, :activity)
end
原因是
{"utf8"=>"✓",
"authenticity_token"=>"mR11T50dN8tm/q+S0fNd+mYYZBR6Xq4it4ujtEOmt/7RmA4TjzTKD//XmFU+UumpbmKcaj9DtG6noHOD2pwk2w==",
"todo"=>{"name"=>"Ezekiel",
"activity"=>"test....an 8th time"},
"commit"=>"Create Todo"}
如果您在参数中看到您正在接收的
name
和activity
在todo
中,您需要将强参数方法更改为requiretodo
,然后接受:name
和:activity
参数
def todo_params
params.require(:todo).permit(:name, :activity)
end
原因是
{"utf8"=>"✓",
"authenticity_token"=>"mR11T50dN8tm/q+S0fNd+mYYZBR6Xq4it4ujtEOmt/7RmA4TjzTKD//XmFU+UumpbmKcaj9DtG6noHOD2pwk2w==",
"todo"=>{"name"=>"Ezekiel",
"activity"=>"test....an 8th time"},
"commit"=>"Create Todo"}
如果在参数中看到您正在接收的
name
和activity
内todo
中的require
参数,我们通常使用模型的名称(todo
),在permit
内使用该模型的属性(:name,:activity
)
在
require
参数中,我们通常使用模型的名称(todo
),在permit
中,我们使用该模型的属性(:name,:activity
)
控制器
def create
@todo = Todo.create(todo_params)
respond_to do |format|
if @todo.save
format.html { redirect_to location_path, notice: 'Todo was successfully created.' }
else
format.html { render :new }
}
end
end
end
Params
def todo_params
params.require(:todo).permit(:name, :activity)
end
控制器
def create
@todo = Todo.create(todo_params)
respond_to do |format|
if @todo.save
format.html { redirect_to location_path, notice: 'Todo was successfully created.' }
else
format.html { render :new }
}
end
end
end
Params
def todo_params
params.require(:todo).permit(:name, :activity)
end
我试过了,当我这么做的时候,它没有给出这个错误,但是activity显示为nil,我可以在params中看到activity的值,所以它应该创建,除非操作是回滚调试,并在savingI尝试之前查看对象中是否有任何错误,当我这样做的时候,它不会给出这个错误,但是activity显示为nil,我可以在params中看到activity的值,所以它应该创建,除非操作是回滚调试,并在保存之前查看对象中是否有任何错误。你能解释一下它做了什么以及为什么要修复它吗?当然,很抱歉之前没有解释,我所做的是,在创建always的函数中,您必须知道这是否是通过设置@variable.save的条件来完成的,因此,如果您保存了视图,或者如果它没有显示错误,则重新定义您想要的视图。另一件事情做得很糟糕,正如您在下面的问题中看到的那样,参数需要一个名为包含:name,:activity的所有内容,这是因为它允许该数组包含它们,所以您可以处理它们。你能解释一下它做了什么以及为什么要修复它吗?当然,很抱歉之前没有解释,我所做的是,在创建always的函数中,您必须知道这是否是通过设置@variable.save的条件来完成的,因此,如果您保存了视图,或者如果它没有显示错误,则重新定义您想要的视图。另一件事情做得很糟糕,正如您在下面的问题中看到的那样,参数需要一个名为包含:name,:activity的所有内容,这是因为它允许该数组包含它们,所以您可以处理它们