更新操作不会更新数据

时间:2014-09-23 13:28:50

标签: ruby-on-rails ruby-on-rails-4

我有更新操作的问题 - 来自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' %>

2 个答案:

答案 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您只需获取记录,就不会对现有对象执行任何实际更新。