Я хочу изменить логический атрибут моего ресурса задачи в зависимости от того, установлен ли флажок checkbox. Я застрял, поскольку не знаю, что делать ... У меня есть все, прежде чем добавлять этот флажок в AJAX, весь CRUD, все проверено с помощью rspec и capybara и загружено. У меня есть следующий код ...Изменить атрибут с помощью флажка, AJAX, jQuery
просмотров/задачи/show.html.erb
27 <%= form_for [@project, @task], :remote => true do |f| %>
28 <%= f.label :completed %>
29 <%= f.check_box :completed %>
30 <% end %>
Это: завершено это логический атрибут задачи.
JavaScripts/tasks.js.coffee
8 jQuery ->
9 $('#task_completed').bind 'change', (event) =>
10 $.post()
не знаю, как закончить это $ .post() вещь и как сделать код в работе контроллера ... До сих пор я только это ...
контроллеры/tasks_controller.rb
1 class TasksController < ApplicationController
2
3 before_filter :authenticate_user!
4 before_filter :find_project_from_project_id
5 before_filter :find_task, :only => [:show, :edit, :update]
6
7 def show
8 @title = @task.name
9 end
10
11 def new
12 @title = 'New task'
13 @task = @project.tasks.build
14 end
15
16 def create
17 @task = @project.tasks.build(params[:task])
18 if @task.save
19 current_user.tasks.push(@task)
20 redirect_to [@project, @task], :notice => 'Task created'
21 else
22 render 'new'
23 flash.now[:alert] = 'Task not created'
24 end
25 end
26
27 def edit
28 @title = 'Edit task'
29 end
30
31 def update
32 if @task.update_attributes(params[:task])
33 redirect_to [@project, @task], :notice => 'Task updated'
34 else
35 render 'edit'
36 flash.now[:alert] = 'Task not updated'
37 end
38 end
39
40 private
41 #controller doesn't respond to these methods as actions
42
43 def find_project_from_project_id
44 @project = current_user.projects.find(params[:project_id])
45 rescue ActiveRecord::RecordNotFound
46 redirect_to projects_path
47 flash[:alert] = 'Project you were looking for could not be found'
48 end
49
50 def find_task
51 @task = @project.tasks.find(params[:id])
52 rescue ActiveRecord::RecordNotFound
53 redirect_to project_path(@project)
54 flash[:alert] = 'Task you were looking for could not be found'
55 end
56
57 end
Кроме того, для те, кто хочет больше ... Как написать тесты для этой вещи? И должен ли я писать их вообще для этого?
EDIT: После исследования я обнаружил, что люди делают это так ... Это путь? При осмотре элемента можно увидеть новые запросы делаются, когда я изменить флажок, но логическое по-прежнему остается ложным ...
8 jQuery ->
9 $('#task_completed').bind 'change', (event) =>
10 $('#task_completed').parents('form:first').submit()
11 $('.task_headline').toggleClass('completed_task')
благодарит за помощь. однако он возвращает это> Неверный запрос bad URI '/ projects/1/tasks/[object% 20Object] '. WEBrick/1.3.1 (Ruby/1.9.3/2012-02-16) на ноутбуке: 3000 – oFca
, поэтому я предполагаю, что мне нужно передать идентификатор задач? если да, то как это сделать? – oFca