タグ付けされた質問 「helpermethods」

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を処理する必要がある場合(外部システムとの統合など)がたくさんあると思います。
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.