タグ付けされた質問 「rails-routing」

7
Railsルーティングヘルパー(mymodel_path(model))をモデルで使用できますか?
ThingというRailsモデルがあるとします。Thingには、オプションでインターネット上のどこかにあるURLに設定できるurl属性があります。ビューコードでは、次のことを行うロジックが必要です。 <% if thing.url.blank? %> <%= link_to('Text', thing_path(thing)) %> <% else %> <%= link_to('Text', thing.url) %> <% end %> ビューのこの条件付きロジックは醜いです。もちろん、ビューを次のように変更するヘルパー関数を作成することもできます。 <%= thing_link('Text', thing) %> これで冗長性の問題は解決しますが、モデル自体に機能を持たせたいと思います。この場合、ビューコードは次のようになります。 <%= link_to('Text', thing.link) %> これには明らかに、モデルにリンクメソッドが必要です。これが含まれる必要があるものです: def link (self.url.blank?) ? thing_path(self) : self.url end 問題は、thing_path()はモデルコード内の未定義のメソッドです。いくつかのヘルパーメソッドをモデルに「引き込む」ことが可能だと思いますが、どうやって?そしてルーティングがアプリのコントローラーとビューレイヤーでのみ機能するという本当の理由はありますか?モデルコードがURLを処理する必要がある場合(外部システムとの統合など)がたくさんあると思います。

4
Ruby onRailsでアンダースコア `_`の代わりにダッシュ` -`を使用したルート
URLで、単語の区切り文字として-アンダースコアで_はなくダッシュを使用したいと思います。たとえば、のcontroller/my-action代わりにcontroller/my_action。 私は2つのことに驚いています: グーグル等。それらを区別し続けます。 そのRubyon Railsには、ルーティングでマップ-するための単純なグローバル構成パラメーターがありません_。それともそうですか? 私が持っている最善の解決策は、:asまたは名前付きルートを使用することです。 私の考えは、Railsルーティングを変更して、そのグローバル構成を確認し、コントローラーアクションにディスパッチする前にに変更-すること_です。 もっと良い方法はありますか?
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.