2013-03-26 2 views
0

им возникли некоторые проблемы при создании маршрута для моего не действия restfull в мой контроллер, вот мой код:маршрутизации с не действиями остальных

контроллер:

class StoresController < ApplicationController 

    def toggle_store 
    @store=Store.find(params[:store]) 
    if @store.available==true 
     @store.update_attribute(:available, false) 
    else 
     @store.update_attribute(:available, true) 
    end 
    redirect_to @store 
    end 

end 

маршруты:

resources :groups do 
    resources :stores do 
     member do 
     post :toggle_store 
     end 
    end 
    end 

, но когда я использую путь по ссылке, я получаю этот URL: http://example.com/groups/1/stores/toggle_store.2

и мне нужно немного вещь вот так: http://example.com/groups/1/stores/2/toggle_store

любые идеи?

Благодаря

EDIT:

рейк маршруты:

toggle_store_group_store POST /groups/:group_id/stores/:id/toggle_store(.:format) stores#toggle_store 

Ссылка:

<%=link_to "toggle", toggle_store_group_stores_path(@group,store), :method => :post %> 
+0

Как вы создаете свой путь? Также скопируйте часть вывода «рейк-маршрутов». –

+0

сделано, я добавил маршруты рейка и как я его связываю –

ответ

0

ок я установил его, как это:

routes.rb:

resources :groups do 
    resources :stores do 
     post :toggle_store  
    end 
    end 

контроллер:

def toggle_store 
    authorize! :toggle, :store 
    @store=Store.find(params[:store_id]) 
    if @store.available==true 
     @store.update_attribute(:available, false) 
    else 
     @store.update_attribute(:available, true) 
    end 
    redirect_to @group 
    end 

ссылка:

<%=link_to "to", toggle_store_group_store_path(@group,store), :method => :post %> 
+1

Хорошо, рад, что вы это решили, но не знаете, в чем была ваша проблема, так как на моей машине все работало нормально. Просто обратите внимание: вы не должны использовать ': method =>: post' с помощью метода' link_to', поскольку, когда пользователь открывает эту ссылку в новой вкладке/окне, атрибут метода теряется, и ссылка отправляется как получить запрос. Подумайте, используя 'button_to' или что-то еще. –

+0

Кстати, есть переключатель! метод для переключения и сохранения атрибутов: @ store.toggle! (: доступно). По крайней мере, вы должны избавиться от if с чем-то вроде: @ store.update_attribute (: available, [email protected]) –

Смежные вопросы