1

OK私は解決できない非常に単純な問題を抱えています。Rails 3アプリケーションで次のルビーコードによってユーザーに表示しているリンクがあります:-

<%= link_to linkbunch_url(@link.link), linkbunch_url(@link.link) %>

これは次のような URL を出力しています:-

http://localhost:3000/linkbunches/7yae8t

今、この「linkbunches」を私の URL の一部にしたくありません。そこで、routes.rb ファイルを変更し、次のようなパスを定義しました:-

match "/:id" => "linkbunches#show"

そのため、URL を から に変更するhttp://localhost:3000/linkbunches/7yae8thttp://localhost:3000/7yae8t、同じページに移動します。全く問題無い。しかし、コントローラー名を出力しないようにルビーコードを実際に変更する方法がわかりません。で試しましroot_url(@link.link)たが、うまくいきませんでした...

4

2 に答える 2

3

オプションを使用してルートに明示的に名前を付けることができ:asます。

match "/:id" => "linkbunches#show", as: :linkbunch

元のルートに名前がないことに注意してください

➜  ~ ✗ rake routes | grep bunch
                /:id(.:format)    linkbunches#show

上記のように名前を付けたら、

➜  ~ ✗ rake routes | grep bunch
   linkbunch    /:id(.:format)    linkbunches#show

これにより、引き続きlinkbunch_url(@link.link)ビューで使用できます。

于 2013-01-16T11:43:00.197 に答える
0

@Deefourは正しいです。ただし、お勧めすることの 1 つは、適切と思われる HTTP メソッドを常に制限することです。の代わりにmatch、次を使用しますget

get "/:id" => "linkbunches#show", as: :linkbunch

matchwith を使用することもできます(これは、Rails の将来のバージョンでvia: :get使用する場合に必要になります) が、他の明示的な形式を使用することをお勧めします。match

于 2013-01-16T11:49:01.217 に答える