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

但是当我在链接中使用路径时,我得到了这个网址:http ://example.com/groups/1/stores/toggle_store.2

我需要这样的东西: http ://example.com/groups/1/stores/2/toggle_store

有任何想法吗?

谢谢

编辑:

耙路线:

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 %>
4

1 回答 1

0

好的,我这样修复它:

路线.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 %>
于 2013-03-26T23:00:36.483 回答