Ruby on rails rails:缺少参数或值为空

Ruby on rails rails:缺少参数或值为空,ruby-on-rails,ruby,Ruby On Rails,Ruby,我不明白为什么会出现这样的错误:“param丢失或值为空” 这是我的密码: class TodoodooController < ApplicationController def index @todos = Todoodoo.where(done: false) @completes = Todoodoo.where(done: true) end def new @todoo = Todoodoo.new end def create

我不明白为什么会出现这样的错误:“param丢失或值为空”

这是我的密码:

class TodoodooController < ApplicationController
  def index
    @todos = Todoodoo.where(done: false)
    @completes = Todoodoo.where(done: true)
  end

  def new
    @todoo = Todoodoo.new
  end

  def create
    @todoo = Todoodoo.new(todo_params)

    if @todoo.save
      redirect_to todoodoo_index_path, :notice => "Your To-Do item was created!"
    end
  end

  def update
    @todoo = Todoodoo.find(todo_params)

    if @todoo.update_attribute(:done, true)
      redirect_to todoodoo_index_path, :notice => "Your To-Do item was marked as done!"
    else
      redirect_to todoodoo_index_path, :notice => "Your To-Do item was unable to be marked as done!"
    end
  end

  def destroy
    @todoo = Todoodoo.find(todo_params)
    @todoo.destroy

    redirect_to todoodoo_index_path, :notice => "Your To-Do item was deleted!"
  end

  def todo_params
    params.require(:todoodoo).permit(:name, :done)
  end

 end
类TodoodooController“您的待办事项已创建!”
结束
结束
def更新
@todoo=Todoodoo.find(todo_参数)
如果@todoo.update_属性(:done,true)
重定向到todoodoo\u索引路径,:notice=>“您的待办事项已标记为已完成!”
其他的
重定向到todoodoo\u索引路径,:notice=>“您的待办事项无法标记为已完成!”
结束
结束
def销毁
@todoo=Todoodoo.find(todo_参数)
@毁灭
重定向到todoodoo\u索引路径,:notice=>“您的待办事项已被删除!”
结束
def todo_参数
参数require(:todoodoo).permit(:name,:done)
结束
结束
作为上下文,我正在创建一个非常简单的待办应用程序,当它尝试执行“更新”功能时,我被卡住了

以下是我对控制器的看法:

<h1> Check: Rule Your Day </h1>


<h2><u> To Do </u></h2>
<% @todos.all.each do |todo| %>
  <p>
     <strong><%= todo.name %></strong>
     <small><%= link_to "Mark as Done", todoodoo_path(todo), :method => :put %></small>
 </p>
<% end %>

<h2><u> Completed </u></h2>
<% @completes.all.each do |todo| %>
  <p>
    <%= todo.name %>
    <small><%= link_to "Remove", todo, :confirm => "Is it okay to remove this from the list?", :method => :delete %></small>
  </p>
<% end %>

<p><%= link_to "Add a to-do item", new_todoodoo_path %></p>
Check:管理好你的一天
做


:put%>

完整的 “可以从列表中删除此项吗?”,:method=>:delete%>

我的todoodoo模型文件中没有任何内容。我通过执行以下“rails g model todoodoo name:string done:boolean”创建了它,我的模型会有问题吗


谢谢你的帮助。其他一切似乎都很好。如果你需要更多信息,请告诉我

由于您没有根据用户的直接输入更新或创建记录,因此不必使用强参数。在
find
调用中,您永远不必使用强参数。它只用于更新和创建记录

换句话说,你不应该做:

Todoodoo.find(todo_params)
但是:

您的
更新操作应如下所示:

def update
  @todoo = Todoodoo.find(params[:id])

  if @todoo.update_attribute(:done, true)
    redirect_to todoodoo_index_path, :notice => "Your To-Do item was marked as done!"
  else
    redirect_to todoodoo_index_path, :notice => "Your To-Do item was unable to be marked as done!"
  end
end

由于您没有根据用户的直接输入更新或创建记录,因此不必使用强参数。在
find
调用中,您永远不必使用强参数。它只用于更新和创建记录

换句话说,你不应该做:

Todoodoo.find(todo_params)
但是:

您的
更新操作应如下所示:

def update
  @todoo = Todoodoo.find(params[:id])

  if @todoo.update_attribute(:done, true)
    redirect_to todoodoo_index_path, :notice => "Your To-Do item was marked as done!"
  else
    redirect_to todoodoo_index_path, :notice => "Your To-Do item was unable to be marked as done!"
  end
end

在更新方法中,将
@todoo=Todoodoo.find(todo_参数)
更改为
@todoo=Todoodoo.find(参数[:id])
。强参数(
todoo_参数
)用于赋值,它们不是用来查找记录的。

更新
方法中,将
@todoo=Todoodoo.find(todoo_参数)
更改为
@todoo=Todoodoo.find(参数[:id])
。强参数(
todo_params
)用于赋值,它们不是用来查找记录的。

结尾第4行中的
t
是什么?我想应该是“todo”?结尾第4行中的
t
是什么?我想应该是“todo”?谢谢!真的很喜欢你对问题和解决方案的解释,让人感觉非常有道理!真的很喜欢你对问题和解决方案的解释,非常有意义