2

スラッシュの代わりに、Rails ルート URL の区切りとしてコロンを使用したいと思います。これを行うことは可能ですか?


私は次のようなものを求めています

match '*page_path/:title ":" *section_path ":" :section_title' => 'pages#show'

そのため、URL に対してfood/fruit/apples:cooking:pie:apple_pie次のパラメーターが返されます。

:page_path = "food/fruit"
:title = "apples"
:section_path = "cooking:pie"
:section_title = "apple_pie"

これはレールで可能ですか?

4

1 に答える 1

1

アプローチは次のとおりです。

match 'food/fruit/:id' => 'pages#show' # add constraints on id if you need

class Recipe < ActiveRecord::Base
  def self.from_param( param )
    title, section_path, section_title = extract_from_param( param ) 
    # your find logic here, ex: find_by_title_and_section_path_and_section_title...
  end

  def to_param
    # build your param string here, 
    # ex: "#{title}:#{section_path}:#{section_title}" 
    # Beware ! now all your urls relative to this resource
    # will use this method instead of #id. 
    # The generated param should be unique, of course.
  end

  private

  def self.extract_from_param( param )
    # extract tokens from params here
  end
end

次に、コントローラーで:

 @recipe = Recipe.from_param( params[:id] )

組み込みのto_paramメソッドの使用はオプションであることに注意してください。

于 2013-03-21T13:07:19.640 に答える