Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 缺少参数或值为空:活动Rails 4_Ruby On Rails_Ruby On Rails 4 - Fatal编程技术网

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
中,您需要将强参数方法更改为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
中的
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的所有内容,这是因为它允许该数组包含它们,所以您可以处理它们