0

ビューファイル(* .html.erb)に、2つのモデルデータポイント(名前と投票数)を表示するリンクを作成したいと思います。5票のBobbyの場合、グラフィカルに次のようになります 。Bobby(5)

表示したい文字列にルビー以外の括弧が含まれている場合、link_toを使用してこれを行うにはどうすればよいですか?

リンクに変換する前のコードは、

<%= user.name %>(<%= link.user.reputation_value_for(:votes).to_i %>)

よろしくお願いします!

4

3 に答える 3

1

link_to次のようなブロックを受け入れることができます:

<%= link_to user do %>
    <%= user.name %>(<%= link.user.reputation_value_for(:votes).to_i %>)
<% end %> 
于 2012-09-16T15:07:19.877 に答える
1

これを試して:

<%= link_to "#{user.name}(#{user.reputation_value_for(:votes).to_i})", whatever_path %>

ルビーコードを含む文字列を作成するときは、通常どおりに入力し、必要なルビーコードを次の間に配置します。#{}

ページが読み込まれると、erbが最初にコンパイルされ、上記の文字列にコンパイルされます

#{user.name}

ボビーに置き換えられ、

#{user.reputation_value_for(:votes).to_i}

8に置き換えられます(それが彼の評判値である場合)

ボビー(8)

于 2012-09-16T15:07:49.867 に答える
1

MVCアプローチを検討し、それを計算するロジックをモデルに配置し、コントローラーから呼び出すことをお勧めします。

このようにして、モデルから始めます。

ユーザー、リンク、投票のモデルを検討します。user_id投票は結合テーブルになり、2つの外部キー(およびlink_id)を追加する移行が必要になります。

User
  has_many votes
  has_many :links, :through => :votes

Link
  has_many_votes
  has_many_users, :through => :votes
  def votes_by_user
    user.votes
  end

Vote
  belongs_to :user
  belongs_to :link

次に、リンクコントローラーで

(1リンクのshowメソッドで)

@link = Link.find(params[:id])

ショービューでは、次のようになります。

@link.users.each do |one_user|    
  link_to one_user, "#{link.user.name}(#{link.votes_by_user(one_user)}")
end

リンクのインデックスメソッドの場合、それまでの反復ですべてをラップします。たとえば、

(インデックス方式)

@links=Link.all

(見る)

<%- @links.each do |one_link|  %>
  <%- one_link.users.each do |one_user| %>   
    <%= link_to one_user, "#{link.user.name}(#{link.votes_by_user(one_user)}") %>
  <%- end %>
<%- end %>
于 2012-09-16T15:08:47.023 に答える