как переписать HTML код в помощнике по рельсам - PullRequest
0 голосов
/ 18 января 2020

Я хочу добавить рейтинг 5 звезд к модели Комментариев. у меня есть форма:

 <%= form_with(model: [ @product, @product.comments.build ], local: true) do |form| %>
  <p>
    <%= form.label t('activerecord.attributes.comment.commenter') %><br>
    <%= form.text_field :commenter %>
  </p>
  <p>
    <%= form.label t('activerecord.attributes.comment.body') %><br>
    <%= form.text_area :body %>
  </p>
  <p>
    <%= form.submit t('products.form.submit') %>
  </p>
<% end %>

модель:

# Table name: comments
#
#  id         :bigint           not null, primary key
#  body       :text
#  commenter  :string
#  rating     :float
#  created_at :datetime         not null
#  updated_at :datetime         not null
#  product_id :bigint           not null

Я хочу добавить поле: рейтинг к этой форме.

HTML:

<div id="reviewStars-input">
  <input id="star-4" type="radio" value="5" name="reviewStars"/>
  <label title="gorgeous" for="star-4"></label>

  <input id="star-3" type="radio" value="4" name="reviewStars"/>
  <label title="good" for="star-3"></label>

  <input id="star-2" type="radio" value="3" name="reviewStars"/>
  <label title="regular" for="star-2"></label>

  <input id="star-1" type="radio" value="2" name="reviewStars"/>
  <label title="poor" for="star-1"></label>

  <input id="star-0" type="radio" value="1" name="reviewStars"/>
  <label title="bad" for="star-0"></label>
</div>

Как использовать вспомогательные рельсы, чтобы в поле модели: рейтинг был пронумерован от 1 до 5

1 Ответ

1 голос
/ 18 января 2020

Попробуйте что-то вроде следующего:

class Comment < ApplicationRecord
  STARS = [
    [5, 'gorgeous'],
    [4, 'good'],
    [3, 'regular'],
    ...
  ]

и

<div id="reviewStars-input">
  <%= collection_radio_buttons(:comment, :rating, Comment::STARS, :first, :second) do |b| %>
    <%= b.radio_button %>
    <%= b.label( title: b.text ) %>
  <% end %>
</div>

приблизят вас в зависимости от того, какие именно метки и классы вам нужны.

...