Проблема со ссылкой на действие показа связанного объекта - PullRequest
0 голосов
/ 17 января 2019

Я пытаюсь создать фрагмент, содержащий ссылку на страницу «Продукт», которая принадлежит категории. Я могу генерировать ссылки на страницы демонстрации продукта, если использую синтаксис массива метода link_to, но в нижней части таблицы есть дополнительная ссылка, которая ведет на страницу индекса продукта.

В настоящее время я использую синтаксис массива для метода link_to для создания ссылок на страницу показа продукта. Это работает, но есть дополнительная ссылка внизу таблицы, которая указывает на страницу индекса продукта. Если продуктов не существует, ссылка все еще находится в отдельной строке. Если продукты существуют, то ссылка будет в пустой строке внизу таблицы.

Частичное

<tr>
  <td>
    <%= product.product_name %>
  </td>
  <td><%= product.product_description %></td>
  <td><%= product.product_price %></td> 
  <td><%= link_to 'Product page', [@category, product] %></td>
</tr>

Вид

  <table>
    <tr>
      <th>Product Name</th>
      <th>Product Description</th>
      <th>Product Price</th>
    </tr>
    <%= render @category.products %>
  </table>

Показать действие контроллера продуктов

  def show
    @category = Category.find(params[:category_id])
    @product = Product.find(params[:id])
  end

Маршрут показа товара

category_product GET    /categories/:category_id/products/:id(.:format)                                          products#show

Скриншот маршрута продуктов вывод рейковых маршрутов | grep product

routes.rb

Rails.application.routes.draw do
  root 'pages#index'
  get 'pages/admin'
  get 'show_customer/:id', to: 'categories#show_customer', as: :show_category_to_customer

  resources :categories do
    resources :products
  end

  resources :users
end

Я хотел бы иметь таблицу, содержащую только ссылки на демонстрационные страницы продукта, а не дополнительную ссылку на страницу индекса продукта. Я пробовал category_product_path (@category, product) в частичном, но я получаю URLGenerationError, сообщающий, что идентификатор продукта равен nil.

Буду признателен за помощь в создании ссылок без дополнительной ссылки.

Ответы [ 2 ]

0 голосов
/ 18 января 2019
<tr>
  <td>
    <%= product.product_name %>
  </td>
  <td><%= product.product_description %></td>
  <td><%= product.product_price %></td> 
  <td><%= link_to 'Product page',  category_product_path(category_id: @category.id, id: product.id)%></td>
</tr>
0 голосов
/ 17 января 2019

Для вашего пути требуется идентификатор продукта, но вы даете неинициализированную переменную "продукт". Пробная загрузка category_product_path (@ category, @ product)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...