2

Rails 3.2 アプリで STI を使用しています。link_toサブクラス名ではなく、ヘルパー(またはパスを生成している場合は他の場所)でRailsにスーパークラス名を使用するように強制したい。

したがって、<%= link_to current_user.name, current_user %>プロデュースします/:class_name/:id(クラス名は「モデレーター」、「メンバー」などにすることができます...)。

/users/:id、サブクラスの名前にusers変わらないを生成してほしいです。に変更できることはわかっていcurrent_userますuser_path(current_user)が、ショートカットを使用して、Rails に認識させることを好みます。

これは可能ですか?

4

3 に答える 3

2

このようなURLヘルパーを定義する必要があると思います

def moderator_url record
  user_url record
end

または単にエイリアスを使用する

alias :moderator_url :user_url

これは、レコードをオプションとして渡すときに Rails が URL 生成に使用するコードです。

https://github.com/rails/rails/blob/537ede912895d421b24acfcbc86daf08f8f22157/actionpack/lib/action_dispatch/routing/polymorphic_routes.rb#L90

于 2012-08-07T17:40:34.167 に答える
0

リンクについては、リソースを追加することでこれを回避できます。

resources :owners, path: 'users', controller: 'users'

フォームの場合、ジェネリック フォームを指定する必要があります。私の最初のフォームは

= simple_form_for @user do |f|

これを機能させるには、ユーザー オブジェクトをフォームに直接渡すのではなく、一般的な名前を使用して、パスとメソッドを指定する必要がありました。

= simple_form_for :user, url: user_path(@user) do |f|
于 2012-08-07T19:35:17.237 に答える
0

名前付きルートを使用します。

<%= link_to current_user.name, user_path(current_user) %>
于 2012-08-07T19:52:42.657 に答える