Как получить доступ к значению вне модели в рельсах - PullRequest
0 голосов
/ 03 августа 2020

На самом деле у меня есть две модели, продукты и категория, а идентификатор категории действует как внешний ключ в продуктах, и я хочу получить доступ ко всем категориям в указателе продуктов. html .erb по идентификатору категории или любым другим способом, у меня есть следующая идея, хотя это неправильный подход.

<% if  product.category_id == 2 %>
    <td> furniture </td>

    <% elsif  product.category_id == 3 %>
    <td>Animals </td>
    <% else %>
    <td> No category </td>
    <% end %>

Her is my Product_controller.rb

  
  before_action :set_product, only: [:show, :edit, :update, :destroy]

  def index
    @products = Product.all
  end


  def show

  end


  def new
    @product = Product.new
  end


  def edit
  end


  def create
    @product = Product.new(product_params)
    @product.user = current_user
    @product.category = Category.first
    
    

  
  
  
  
  private
     actions.
    def set_product
      @product = Product.find(params[:id])
    end

  
    def product_params
      params.require(:product).permit(:productname, :productprice, :productstatus,:image ,:category_id )
    end

1 Ответ

1 голос
/ 03 августа 2020

Если вы правильно объявили ассоциации в своих моделях - аналогично этому

class Product < ApplicationRecord
  belongs_to :category
end

class Category < AppicationRecord
  has_many :products
end

Тогда вы сможете просто использовать product.category для загрузки категории продукта. Если предположить, что в категории есть что-то вроде name, то ваше представление можно упростить до примерно такого:

<td><%= product.category&.name || 'No category' %></td>
...