2

rails generate scaffold admin/user --model-name=Userorを使用するrails generate scaffold_controller --model-name=Userと、ほとんどすべてが名前空間形式で生成されます。app/controllers/admin/users_controller.rbコントローラーを手にapp/views/admin/users/入れて、ビューでいっぱいにします。

うまくいかないことの 1 つは、パスです。などへの参照を手動で置き換えて置き換える必要がありuser_pathますadmin_user_path。これはかなり面倒です。

モデルが含まれている名前空間ではなく、新しい名前空間を指すパスを生成するよう Rails に指示する方法はありますか?

Rails4を使用。

4

1 に答える 1

3

Railsビルトインジェネレーターではできません。

理由を理解するには、ジェネレーターのソース コードを参照してください。

<td><%%= link_to 'Show', <%= singular_table_name %> %></td>
<td><%%= link_to 'Edit', edit_<%= singular_table_name %>_path(<%= singular_table_name %>) %></td>
<td><%%= link_to 'Destroy', <%= singular_table_name %>, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>

ご覧のとおり、edit_<%= singular_table_name %>_path名前の間隔を考慮せずに編集パスを生成します。(そして、haml-railsも同じことを行います)


時間と忍耐があれば、コードベースでこれを修正し、PR を提案するのが最善の方法です。結局のところ、それがオープンソースの要点です。

この方向に進む場合は、未解決の問題を最初に見てください。私は深く掘り下げていませんが、その問題について別の会話が行われているようです. https://github.com/rails/rails/pull/13927またはhttps://github.com/rails/rails/issues/21652のように


または、ネームペーシングをサポートしていると思われるBeautiful-Scaffold のような既存の gem を使用することもできます

于 2015-10-19T04:49:27.773 に答える