新手问题 Restful 的路由中,如何在 url 中传递参数

QueXuQ · 2012年10月24日 · 最后由 QueXuQ 回复于 2012年10月28日 · 9234 次阅读

在一般的路由里面传递参数,非常方便。 如下我想做一个搜索,但是不通过搜索框,而是点击。 例如:萝卜,青瓜。我要搜索这 2 项,我做两个链接 一个:萝卜 一个:青瓜 只需要点击,萝卜就显示萝卜有什么,点击青瓜,就显示青瓜有什么。 如果用一般的路由,可以这样设计:

get "fruits/:fruit_type" => "fruits#all"

link_to '萝卜', "fruits/radish"

需要什么,就在:fruit_type 中传递就可以了。

但是在 Restful 的路由中应该怎么设计呢? 目前我是加 action 和 collection 来弄,然后 render :index,但是一旦搜索多了,action 就太多了,如:

def 萝卜
  @fruits = 萝卜
  render :index
end
def 青瓜
  @fruits = 青瓜
  render :index
end

routes:
resources fruits do
  collection do
    get: 萝卜,青瓜
  end
end

请问这里有什么窍门呢?

匿名 #1 2012年10月24日
routes:
resources fruits

view:
link_to '萝卜', url_for(:controller=>:fruits,:action=>:index,:type=>"萝卜")
link_to '青瓜', url_for(:controller=>:fruits,:action=>:index,:type=>"青瓜")

action:

def index
  params[:type] #就是你想要的。。。。
end

mys_path(:type => "lsslls")

resources :fruits do
  collection do
    get 'name/:fruit_type', action: :name, as: :name
  end
end

#2 楼 @ruby_sky #3 楼 @chechaoyang 谢谢,这两个方法很不错~

需要 登录 后方可回复, 如果你还没有账号请 注册新账号