链接到关联对象的显示操作的问题

时间:2019-01-17 06:36:05

标签: ruby-on-rails ruby-on-rails-5

我正在尝试渲染一个包含指向“产品”页面的链接的部分,该页面属于一个类别。如果我使用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

产品路线的屏幕截图 output of rake routes | 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表示产品ID为零。

对于在不获取额外链接的情况下如何生成链接的任何帮助,我们将不胜感激。

2 个答案:

答案 0 :(得分:0)

您的路径需要产品的ID,但是您要提供未初始化的变量“产品”。 试用category_product_path(@ category,@ product)

答案 1 :(得分:0)

<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>