【发布时间】:2018-08-13 19:26:23
【问题描述】:
我对 Rails 还很陌生,并且在 CodeAcademy 之类的课程之外构建我的第一个应用程序。我遇到了参数+构建删除功能的问题。当我使私有 tasks_params 记录如下所示时,我可以在索引上显示所有任务:
private
def task_params
params.require(:task).permit(:name, :description, :due_date)
end
点击删除功能并确认它会抛出这个:
param is missing or the value is empty: task
当我不再“需要” :task 参数而是“允许”它时,如下所示:
private
def task_params
params.permit(:task, :name, :description, :due_date)
end
我的应用返回:
Couldn't find Task with 'id'=
下面是 routes.rb 文件、Tasks_Controller.rb 文件和 index.html.erb 文件。任何帮助将不胜感激。
routes.rb
get 'signup' => 'users#new'
resources :users
get 'login' => 'sessions#new'
post 'login' => 'sessions#create'
delete 'logout' => 'sessions#destroy'
get 'tasks' => 'tasks#index'
get 'tasks/new' => 'tasks#new'
post 'tasks' => 'tasks#create'
delete 'tasks/:id' => 'tasks#delete'
get 'tasks/:id/edit' => 'tasks#edit'
put 'tasks/:id' => 'tasks#update'
end
Task_Controller.rb 类任务控制器
def new
@task = Task.new
end
def create
@task = Task.new(task_params)
if @task.save
redirect_to '/tasks'
else
render 'new'
end
end
def edit
@task = Task.find(task_params[:id])
end
def update
@task = Task.find(task_params[:id])
@task.update_attributes(task_params[:description])
redirect_to '/tasks'
end
def delete
@task = Task.find(task_params[:id])
@task.delete
redirect_to tasks_path
end
private
def task_params
params.permit(:task, :name, :description, :due_date)
end
结束
index.html.erb
<h2>Your Tasks</h2>
<div class="tasks">
<div class="container">
<% @task.each do |task| %>
<div class="task">
<p>Title: <%= task.name %></p>
<p>Description: <%= task.description %></p>
<p>Due Date: <%= task.due_date %></p>
<%= link_to 'delete', task_path(task),
method: :delete,
data: { confirm: 'Are you sure?' } %>
</div>
<% end %>
</div>
</div>
提前致谢!
【问题讨论】:
标签: ruby-on-rails ruby