0

ハーフ!テンプレートのフォーマットがおかしくて、どうして/なぜなのかわかりません。

<% @poll.questions_all.each do |q| %>
          <td>
            <span class="optionvalue">
              <% if can? :read_full, @poll %>
                <%= resp[:texts][q.id] %>
              <% else %>
                <%= resp[:texts][q.id].nil? ? '' : resp[:texts][q.id].gsub(Question::POISON_WORDS_REGEX, '---') %>
              <% end %>
            </span>
            <% unless q.options.empty? %>
              <%= q.get_matching_option(resp[:texts][q.id])? ": #{q.get_matching_option(resp[:texts][q.id])}" : '' %>
            <% end %>
          </td>
        <% end %>

結果は次のようになります。

A : Playgrounds

その最初のスペースがどこに形成されるのか見当もつかないし、それを取り除くためのあらゆる努力が失敗に終わった! 生成されたマークアップ:

<td>
   <span class="optionvalue">
       A
   </span>
       : Playgrounds
</td>
4

3 に答える 3

1

<%- -%>erb タグのバージョンを使用してみてください。これらは余分な空白を抑制するはずです:

<%- if can? :read_full, @poll -%>
  <%= resp[:texts][q.id] %>
<%- else -%>
  <%= resp[:texts][q.id].nil? ? '' : resp[:texts][q.id].gsub(Question::POISON_WORDS_REGEX, '---') %>
<%- end -%>

開始タグと終了タグの両方でそれらが必要かどうかは思い出せませんが、試してみて、必要なものが得られるかどうかを確認することをお勧めします.

于 2012-10-11T02:42:51.810 に答える
0

恐ろしい解決策ですが、機能します:

            <% @poll.questions_all.each do |q| %>
          <td>
            <span class="optionvalue">
              <% if can? :read_full, @poll %>
                <%= resp[:texts][q.id] %></span><%= q.get_matching_option(resp[:texts][q.id])? ": #{q.get_matching_option(resp[:texts][q.id])}" : '' unless q.options.empty? %>
              <% else %>
                <%= resp[:texts][q.id].nil? ? '' : resp[:texts][q.id].gsub(Question::POISON_WORDS_REGEX, '---') %></span><%= q.get_matching_option(resp[:texts][q.id])? ": #{q.get_matching_option(resp[:texts][q.id])}" : '' unless q.options.empty? %>
              <% end %>
          </td>
        <% end %>
于 2012-10-11T02:00:45.830 に答える
0

erbすべてを HTML の 1 行に収めれば、(不要な行を追加しないで) 適切な処理が行われると確信しています。

この場合、一般的に、ビュー ヘルパー ファイルのメソッドにコンテンツを生成するためのロジックを配置することをお勧めします (または、この例のように、面倒な場合は erb のコード ブロックに配置します)。

<% @poll.questions_all.each do |q| %>
  <% 
    if can? :read_full, @poll
      texts = resp[:texts][q.id]
    else
      texts = (resp[:texts][q.id].nil? ? '' : resp[:texts][q.id].gsub(Question::POISON_WORDS_REGEX, '---'))
    end
    if q.options.empty?
      matching_options = ''
    else 
      matching_options = (q.get_matching_option(resp[:texts][q.id])? ": #{q.get_matching_option(resp[:texts][q.id])}" : '')
    end
  %> 
  <td>
    <span class="optionvalue"><%= texts %></span><%= matching_options %>
  </td>
<% end %>
于 2012-10-11T02:22:44.670 に答える