저는 레일을 처음 사용하고 간단한 작업을 수행하려고합니다. 이미지 클릭에 부울 속성 "완료"를 토글하고 싶습니다.레일 - 컨트롤러의 단일 속성을 업데이트하는 방법
def toggle_done
@calendar = Calendar.find(params[:id])
toggle = [email protected]
@calendar.update_attributes(:done => toggle)
respond_to do |format|
flash[:success] = "Calendar updated"
format.html { redirect_to root_path }
format.js
end
I를 :
컨트롤러에서resources :calendars do
get 'toggle_done', :on => :member
end
, 내가 방법을 만들었습니다 다음과 같이 내가 경로를 추가
<%= link_to image_tag("done.png"),
feed_item,
:controller => :calendars, :action=>:toggle_done,:id=> feed_item.id,
:title => "Mark as done", :remote=> true, :class=>"delete-icon" %>
:처럼 내보기에서 , 내 링크가 보인다 이미지를 클릭해도 아무런 반응이 없습니다. 다음 오류가 표시됩니다.
Started GET "/toggle_done" for 127.0.0.1 at 2010-12-27 13:56:38 +0530
ActionController::RoutingError (No route matches "/toggle_done"):
나는 여기에 실종 된 매우 사소한 것이 있음을 확신합니다.
Aditya, 젠장. 나는 이것을 결코 알지 못했다. :) 덕분에. 다시 좋은 책이나 레일스에 대한 레퍼런스를 공유하라는 요청. – Ved
사실이 경우 PUT은 'RESTful 아키텍처'의 컨텍스트에서 사용되어서는 안됩니다. GET, PUT 및 DELETE는 모두 필요하지 않으므로 매개 변수가있는 작업을 호출 할 때마다 동일한 결과가 반환되어야합니다. 따라서 토글은 해당 PUT 및 DELETE가 없거나 각 상태에 대해 두 개의 PUT (참/거짓)이 없으면 실제로 RESTful이 아닙니다. – saneshark