1. ホーム
  2. ruby-on-rails

[解決済み] rails の link_to ヘルパーに css クラスを追加する。

2022-02-18 08:48:38

質問

以下のコードを使用して、cssを使用してrailsのリンクにスタイルを設定しようとしています。

<%= link_to "Learn More", :controller => "menus", :action => "index", :class => "btn btn-inverse" %>

これによって、次のようなリンクが作成されると予想されます。

<a href="menus/" class="btn btn-inverse">Learn More</a>

代わりに、rails は次のようにレンダリングします。

<a href="/menus?class=btn+btn-inverse">Learn More</a>

この問題に直面したことのある人/私が何を間違えているか知っている人はいますか?ヘルパーを使うのではなく、手動でアンカータグを作成することでこの問題を回避できることは知っていますが、ヘルパー自体にcssのクラス情報を渡す方法があるのかどうか疑問に思っていました。Rails 3.2.6を使用しています。

ありがとうございます。

解決方法は?

構文に問題があります。代わりにこれを試してみてください。

<%= link_to "Learn More", {controller: "menus", action: "index"}, class: "btn btn-inverse" %>

link_to Helperをさらに使いこなすためのドキュメントをいくつか紹介します。

と言われます。

古い引数のスタイルを使用する場合は、余分なリテラルハッシュが必要なので、注意してください。

link_to "Articles", { :controller => "articles" }, :id => "news", :class => "article"
# => <a href="/articles" class="article" id="news">Articles</a>

ハッシュをオフにすると、間違ったリンクが表示されます。

link_to "WRONG!", :controller => "articles", :id => "news", :class => "article"
# => <a href="/articles/index/news?class=article">WRONG!</a>


をお勧めします。 URLヘルパーを使用します。 は、ルーティングの設定にしたがって生成されます。あなたの場合

link_to "Learn More", menus_path, :class => "btn btn-inverse"

生成されたヘルパーについて、少し思い出してください。

# routes.rb
resources :users

# any view/controller
users_path #=> /users
edit_user_path(user) #=> /users/:id/edit
user_path(user) #=> /users/:id  (show action)
new_user_path(user) #=> /users/new