2015-01-22 3 views
0

전 레일에 초보자입니다. 첫 번째 프로젝트의 경우, "To Do"앱을 만들기로 결정했습니다. 2 시간 후에, 나는 뒤로 물러났다. 내 컨트롤러 :Ruby on Rails | param이 없거나 값이 비어 있습니다.

def complete_todo 
    @task = Task.find(params[:id]) 
    @task.complete_task = true 
    if @task.update_attributes(task_params) 
     redirect_to root_path 
    end 
end 

private 
def task_params 
    params.require(:task).permit(:name, 
           :description, 
           :start_on, 
           :finish_date, 
           :repeat, 
           :complete_task) 
end 

내 경로

Rails.application.routes.draw do 
    root 'tasks#index' 
    resources :tasks 
    get 'create_new_task', to: 'tasks#new' 
    get 'complete',   to: 'tasks#complete' 
    post 'tasks/complete_todo/:id', to: 'tasks#complete_todo', as: 'finished_task' 
end 

내보기

- @tasks.each do |task| 
    - if task.complete_task == false 
     div class="panel panel-primary" 
      div class="panel-heading"    
       h3 class="panel-title" = link_to task.name, task_path(task)  
      div class="panel-body" 
       div class="col-md-11" 
        = task.description 
       div class="col-md-1" 
        div class="bs-glyphicons" 
         = link_to finished_task_path(task), method: :post do 
          div class="col-md-6" 
           span class="glyphicon glyphicon-ok" 
         = link_to task_path(task), method: :delete do 
          div class="col-md-6" 
           span class="glyphicon glyphicon-remove" 

좀 더 쓰기 싶지만, 영어로 내 글 스킬 = (

+0

내가 생각하는 경로에서 문제가. 도와주세요, 제발. – Dmitry

답변

0

끔찍 대답을 찾았습니다. 컨트롤러 편집 :

def complete_todo 
    @task = Task.find(params[:id]) 
    @task.complete_task = true 
    if @task.save 
     redirect_to root_path 
    end 
end 

그리고 편집 노선 :

post 'tasks/:id/complete_todo', to: 'tasks#complete_todo', as: 'finished_task' 
관련 문제