69

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

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

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

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

代わりに、レールはこれをレンダリングしています -

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

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

ありがとう!

4

5 に答える 5

128

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

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

link_to ヘルパーをさらに進めるためのいくつかのドキュメント

彼らが言うには:

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

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
于 2012-10-22T17:09:41.430 に答える
5

新しい引数規則を試してください:

<%= link_to 'Learn More', 'menus#index', class: 'btn btn-inverse' %>
于 2013-06-19T08:08:21.917 に答える
1

リンクに必要なコントローラーアクション/ルートがない場合は、プレースホルダーとして nil を渡し、必要に応じて適用するクラスを取得できます

<%= link_to 'link verbiage', nil,  class: 'classes for action tag'%>
于 2019-09-27T18:40:24.157 に答える