2014-09-23 2 views
0

У меня проблема с действием update - для метода PUT из REST. Когда я пытаюсь обновить строку (задача в моем случае), она останется прежней. Ничего не меняется.Обновление не обновляет данные

Мое приложение представляет собой простой список «СДЕЛАТЬ». Пользователь может создавать задачи, редактировать и просматривать задачи.

У меня есть контроллер:

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' %> 

ответ

4

Вам необходимо обновить @task с Params

def update 
    @task = Task.find(params[:id]) 
    if @task.update_attributes(task_params) 
    redirect_to tasks_path 
    else 
    render action: :edit 
    end 
end 
0

Вы должны установить новые значения Задачи. С find вы просто извлекаете запись, вы не выполняете никакого фактического обновления существующего объекта.