@bobanuk

Как отобразить имя категории вместо сategory_id в index.html.erb ?

Всем привет, помогите пожалуйста. Делаю категории связанные с товарами все нормально работает но не могу понять как отобразить имя категории а не ее id.

rails g scaffold Products name:string category_id
rails g scaffold Category name:string

product.rb
belongs_to :category

category.rb
has_many :products


index.html.erb
<table>
  <thead>
    <tr>
      <th>Name</th>
      <th>Category</th>
      <th colspan="2"></th>
    </tr>
  </thead>

  <tbody>
    <% @products.each do |product| %>
      <tr>
        <td><%= product.name %></td>
        <td><%= product.category_id %></td>
        <td><%= link_to 'Show', product %></td>
        <td><%= link_to 'Edit', edit_product_path(product) %></td>
        <td><%= link_to 'Destroy', product, method: :delete, data: { confirm: 'Are you sure?' } %></td>
      </tr>
    <% end %>
  </tbody>
</table>


products_controller.rb
def create
    product = Product.new(product_params)
    respond_to do |format|
      if product.save
        format.html { redirect_to product, notice: 'Product was successfully created.' }
      else
        format.html { render :new }
      end
    end
  end

def new
    product = Product.new
    @categories = Category.all.map{|c| [ c.name, c.id ] }
end


_form.html.erb
<div class="field">
    <%= f.label :category_id %><br>
    <%= f.collection_select :category_id, Category.order(:name), :id, :name, class: 'span12' %>
  </div>
  • Вопрос задан
  • 2300 просмотров
Решения вопроса 1
Any1
@Any1
Вместо
<td><%= product.category_id %></td>
поставьте
<td><%= product.category.name %></td>
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы