我有更新操作的问题 - 来自REST的PUT方法。 当我尝试更新一行(在我的情况下是任务)时,它保持不变。什么都没有改变。
我的申请是一个简单的“待办事项”。名单。用户可以创建任务,编辑和浏览任务。
我有控制器:
class TasksController < ApplicationController
def index
@task = Task.new
@tasks = Task.all
end
def create
Task.create(task_params)
redirect_to :back
end
def edit
@task = Task.find(params[:id])
end
def update
@task = Task.find(params[:id])
@task.save
redirect_to tasks_path
end
private
def task_params
params.require(:task).permit(:task)
end
end
模特:
class Task < ActiveRecord::Base
end
部分:
<%= form_for @task do |f| %>
<%= f.label :task, "Type your task:", id: "task" %>
<%= f.text_field :task %>
<%= f.submit "Create!", id: "add_task" %>
<% end %>
对于这个观点:
<h1>Edit</h1>
<%= render 'form' %>
答案 0 :(得分:4)
您需要使用参数
更新@task
def update
@task = Task.find(params[:id])
if @task.update_attributes(task_params)
redirect_to tasks_path
else
render action: :edit
end
end
答案 1 :(得分:0)
您必须设置任务的新值。使用find
您只需获取记录,就不会对现有对象执行任何实际更新。