Я новичок в рельсах и стараюсь достичь простой задачи. Я хочу переключить логический атрибут «done» на щелчок изображения. На мой взгляд, моя ссылка выглядит следующим образом:Rails - Как обновить один атрибут в контроллере
<%= 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" %>
Я добавил маршрут следующим образом:
resources :calendars do
get 'toggle_done', :on => :member
end
в контроллере, я создал метод:
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
Когда я щелкните по изображению, ничего не происходит. Я вижу следующую ошибку:
Started GET "/toggle_done" for 127.0.0.1 at 2010-12-27 13:56:38 +0530
ActionController::RoutingError (No route matches "/toggle_done"):
Я уверен, что здесь есть что-то очень тривиальное.
Адитья, черт возьми. Я никогда не знал этого :) спасибо тонну. Опять же просьба поделиться какой-то хорошей книгой или ссылкой на Rails. – Ved
На самом деле в этом случае PUT не следует использовать ни в контексте «архитектуры RESTful». Поскольку GET, PUT и DELETE все требуют indempotence, в том, что вызов действия с параметрами должен возвращать одинаковый результат каждый раз. Поэтому переключатель не будет RESTful, если у вас нет соответствующих PUT и DELETE, или два PUT для каждого состояния (true/false). – saneshark