2010-12-29 4 views
0

이 질문은 어리석게 쉽게 보입니다. 그러나 나는 붙어있는 것처럼 보입니다.레일 3, 특정 값을 변경하면

, 우리는 테이블 "책"

각 책이 있다고 할 수있는 이름, 설명 및 상태를 가지고있다.

내가 쇼 뷰에서 링크를 생성하려고 할 때, 클릭하면 상태가 변경됩니다 (예 : "읽기").

지금까지 내가 컨트롤러에 블록을 추가 해봤 말한다 :

def read 

    @book = Book.find(params[:id]) 
    @book.status = "Read" 
    @book.update_attributes(params[:book]) 

    respond_to do |format| 
    format.html { redirect_to :back} 
    format.xml { render :xml => @book } 
    end 

end 

그런 다음 내가 좋아하다 볼 수있는 링크가 추가되었습니다 : <퍼센트 = LINK_TO "읽기" , read_book_path (@book), : method => : put %>

이것은 전혀 작동하지 않습니다. 나는 그것을 내 노선에 추가했지만 문제가되지는 않습니다.

도움이 될 것입니다. 감사! 당신이하려는 모든 책에 status 속성을 설정하지 업데이트 할 경우 정의되지 않은 메서드`read_book_path '

답변

2

읽라는 방법을 정의 할 필요가 (@ 북) : remote => true %>

그 작동되면

resources :books do 
    member do 
    get 'read' 
    end 
end 

, 엉망이 주위에 방법을 변화와 :

과 routes.rb에서이

+0

을 넣어 헤이 세스, 대답을 주셔서 감사합니다! 내가 정확히 같은 것을 시도했을 때 나는 같은 NoMethodError를 얻는 것처럼 보였습니다 : "정의되지 않은 메소드'read_book_path 'for" – Elliot

+0

사실, 작동했습니다! 나는 나의 길에서 회원 대신에 수집을 가지고 있었다! 감사! – Elliot

+0

복수형을 다시 확인하십시오. resourceS : bookS. 콘솔에서 "rake routes"를 실행하고 – sethvargo

0

:

-Elliot

편집 : 나는 NoMethodError을 얻고 추가 ​​잊어 버렸 다른 모든 매개 변수는 update_attributes를 호출 할 필요가 없습니다.

변화 :

@book.update_attributes(params[:book]) 

에 :

def read 
    @book = Book.find(params[:id]) 

    @book.status = "Read" 
    @book.save 
end 

는 그런 다음 <퍼센트 = LINK_TO "읽기"원 read_book_path을 :

@book.save!