【问题标题】:Star Rating render instead of simple select_tag drop down renderStar Rating 渲染而不是简单的 select_tag 下拉渲染
【发布时间】:2014-06-26 02:37:04
【问题描述】:

我有这个跨度:

<span class="rating">
  <tr>
    <td>Quality</td>
    <td><%= select_tag :quality,  options_for_select(["1", "2", "3", "4", "5"]), { multiple: false } %></td>
  </tr>
  <tr>
    <td>Cost</td>
    <td><%= select_tag :cost,  options_for_select(["1", "2", "3", "4", "5"]), { multiple: false } %></td>
  </tr>
  <tr>
    <td>Time</td>
    <td><%= select_tag :time,  options_for_select(["1", "2", "3", "4", "5"]), { multiple: false } %></td>
  </tr>
  <tr>
    <td>Experience</td>
    <td><%= select_tag :experience,  options_for_select(["1", "2", "3", "4", "5"]), { :multiple => false } %></td>
  </tr>
  <tr>
    <td>Communication</td>
    <td><%= select_tag :communication,  options_for_select(["1", "2", "3", "4", "5"]), { :multiple => false } %></td>
  </tr>
</span>

用于设置用户的一些评分参数。它仅呈现在不好的下拉列表中。我决定使用基于星级的评分,并通过一些搜索找到了这个nice article

我确实正确放置了所有 CSS,我可以看到星星应该显示并呈现为:

<span class="rating">
<input type="radio" class="rating-input"
    id="rating-input-1-5" name="rating-input-1">
<label for="rating-input-1-5" class="rating-star"></label>
<input type="radio" class="rating-input"
    id="rating-input-1-4" name="rating-input-1">
<label for="rating-input-1-4" class="rating-star"></label>
<input type="radio" class="rating-input"
    id="rating-input-1-3" name="rating-input-1">
<label for="rating-input-1-3" class="rating-star"></label>
<input type="radio" class="rating-input"
    id="rating-input-1-2" name="rating-input-1">
<label for="rating-input-1-2" class="rating-star"></label>
<input type="radio" class="rating-input"
    id="rating-input-1-1" name="rating-input-1">
<label for="rating-input-1-1" class="rating-star"></label>
</span>

我尝试了几种方法,但我不确定如何更改:&lt;%= select_tag :quality, options_for_select(["1", "2", "3", "4", "5"]), { multiple: false } %&gt; 进入收音机,星星,输入。

我最近到达的是:

    <td>
      <% [ '1', '2', '3', '4', '5' ].each do |quality| %>
        <br><%= radio_button_tag 'quality', quality, @quality == quality, class: "rating-input" %>
        <%= label_tag "rating_#{quality}", quality.humanize %>
        <label for="rating-input-1-5" class="rating-star"></label>
      <% end %>
    </td> 

任何指导将不胜感激。

【问题讨论】:

    标签: css ruby-on-rails


    【解决方案1】:

    尝试以下方法:

    1..5.each do |rate|
      radio_button_tag 'quality', quality, resource.quality == quality, class: 'rating-input', id: "rating_quality_#{rate}"
      label_tag "rating_quality_#{rate}"
    end
    

    为了便于阅读,我没有包含&lt;%%&gt; 标签。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-15
      • 2014-09-07
      • 1970-01-01
      • 2021-02-12
      • 2021-10-12
      相关资源
      最近更新 更多