23650


今ツイッターのようなWEBサイトを作っています。  
他人のGithubを参照しているのですが”リツイート”する事に機能するviewファイルの_retweet.html.erb  
に理解できないコードが出てきました。

[code]

    <span id="retweet-<%= retweet.id %>">　の部分です。
    
[/code]

"retweet-<%= retweet.id %>"の所が特にわからなく、  
なぜ-記号が出できて、引数ではない形で<%= retweet.id %>を使用しているのかわかりません。  
このコードの意味はなんなのでしょうか？  
_retweet.html.erbの全体は

[code]

    <div id="retweet-<%= retweet.id %>" class="micropost">
      <div class="content">
        <div class="avatar-content">
          <%= link_to retweet.source_tweet.user do %>
            <%= render 'partials/avatar', user: retweet.source_tweet.user, klass: 'avatar' %>
          <% end %>
        </div>
        <div class="post-content">
          <span class="name"><%= retweet.source_tweet.user.name %></span>
          <span class="username">@<%= retweet.source_tweet.user.username %></span>
          <div class="post">
            <%= retweet.source_tweet.tweet_text %>
          </div>
        </div>
        <div class="right-content">
          <span><%= relative_time(retweet.source_tweet.created_at) %></span>
        </div>
      </div>
      <div class="actions">
        <div class="actions-content">
          <%= link_to reply_tweet_path(retweet.id), method: :post, remote: true do %>
            <i class="fa fa-arrow-left"></i>
          <% end %>
          <span id="retweet-<%= retweet.id %>">
            <%= render 'retweets/retweet_button', tweet_id: retweet.source_tweet.id %>
          </span>
          <span id="favor-tweet-<%= retweet.id %>">
            <%= render 'favorites/favorite_button', tweet_id: retweet.id %>
          </span>
        </div>
      </div>
    </div>
    
[/code]

のようになっています。

ちなみにretweets_controller.rbは

[code]

    class RetweetsController < ApplicationController
    
      before_action :authenticate_user!
    
      def create
        @retweet = Retweet.new(source_tweet_id: params[:tweet_id])
        respond_to do |format|
          format.js
        end
      end
    
      def destroy
        @retweet = Retweet.new(params[:id])
        respond_to do |format|
          format.js
        end
      end
    end
    
[/code]

のようになっています。


CC BY-SA 3.0
2016-03-31T07:16:02.663
23648
2016-03-31T07:46:53.223
14754
question
ruby-on-rails
リツイート機能に関してのコードの質問


ERB では **HTMLなどの文脈に関係なく** 、書かれた位置にそのまま挿入されます。  
記載された例だと、`<span id="retweet-1234">` のような出力になります。(`1234` は `retweet.id` の値。)


CC BY-SA 3.0
2016-03-31T07:30:40.610
23650
2016-03-31T07:30:40.610
76
23648
answer


erbでは`<% xxxx %>`で囲むことでrubyのコードとして解釈されます。  
さらに`<%= xxxx %>`とすることでxxxxの戻り値が埋め込まれます。

よって`<span id="retweet-<%= retweet.id %>">`は  
例としてretweet.idが100の場合、  
`<span id="retweet-100">`と置き換えられて出力されます。


CC BY-SA 3.0
2016-03-31T07:46:53.223
23654
2016-03-31T07:46:53.223
4850
23648
answer