Я прочитал соответствующие вопросы по стеку, но, похоже, все еще сталкиваюсь с ошибкой маршрутизации со следующим кодом:
Routes.rb
resources :memberships do
put :toggleon
put :toggleoff
end
Memberships_controller.rb
def toggleon
@membership = Membership.find(params[:id])
@membership.update_attributes(:active => true)
if user.id == membership_id
redirect_to root_path
else
redirect_to group
end
end
def toggleoff
@membership = Membership.find(params[:id])
@membership.update_attributes(:active => false)
if user.id == membership_id
redirect_to root_path
else
redirect_to group
end
end
Show.html.erb
<% if this_membership.active %>
<%= link_to 'Pause', this_membership, controller: :memberships, method: :toggleoff, style: 'color:#ccc' %>
<% else %>
<%= link_to 'Start', this_membership, controller: :memberships, method: :toggleon, style: 'color:green' %>
<% end %>
Текст ошибки
Started POST "/memberships/13" for 127.0.0.1 at 2011-09-27 23:35:35 +0100
ActionController::RoutingError (No route matches "/memberships/13"):
Я могу просто уничтожить членство, но переключение активности членства оказывается сложным.
Заранее спасибо!
Вторая попытка
<%= link_to("Pause", membership_toggle(@membership), :method => :put, :title => "This toggles it off") %>
<% else %>
<%= link_to("Toggle On", membership_toggle(@membership), :method => :put, :title => "This toggles it on") %>
и
def toggle
@membership = Membership.find(params[:id])
@membership.toggle!(active)
end
и
resources :memberships do
member do
put :toggle
end
end
теперь выдает мне эту ошибку ...
undefined method `membership_toggle' for #<#<Class:0x00000102e69bc0>:0x00000102e66ec0>