0

Rails には、ルートを設定する専用のmatchメソッドがあります。、、 など、いくつかのオプションがあります。そのうちの 1 つが:controllerオプションです。:action:via:as

:なので

ルーティング ヘルパーの生成に使用される名前。

たとえば、次のようなルート設定があります。

match("user/hello' => "users#show",
      via: 'get',
      :as => :user_hello,
    )

このオプションを使用すると、テンプレート:asでこれを実行できます。html.erb

<%= link_to("User Hello", user_hello_path()) %>

レンダリングされたページでこれを取得します。

<a href="user/hello">User Hello</a>

しかし、このヘルパーのデフォルトの動作を変更したいと思います。生成された URL にプレフィックスを追加して、次のようにします。

<a href="myprefix/user/hello">User Hello</a>

問題は、:asヘルパー モジュール ファイルでその変数を取得する方法です。

# File: C:\MyApp\app\helpers\users_helper.rb
module UsersHelper

    # I explicitly redefine the default helper
    # but can't get :as option here
    def user_hello_path
        "myprefix/" + :as.to_s  # <-- how to get the ":as" option here
    end
end

また、コントローラーでこれらすべてのmatchメソッドオプションを取得する方法は?

4

2 に答える 2

1

namespace たとえば、次のようなものを使用できます

namespace :yourprefix do
#your route here
end

そして、これはあなたを返します"yourprefix/your_route"

メソッドについての時点で-パスをメソッドに渡すことができます

def user_hello_path(user_path)
        "myprefix/" + user_path.to_s  # <-- how to get the ":as" option here
end

ビューのどこかで

user_hello_path(user_hello(@user))
于 2013-04-14T15:06:21.850 に答える
0

オプションは、ルートの:as名前とは関係ありません。あなたはこれを完全に持つことができます:

get "myprefix/user/hello' => "users#show", as: 'user_hello'

ただし、カスタムプレフィックスの下で特定の数のルートをグループ化するようなことをしたい場合は、@ Avdept の回答で説明されている名前空間で何かを行う必要があります。

于 2013-04-14T15:13:20.973 に答える