【问题标题】:NoMethodError (undefined method `product_url'NoMethodError(未定义的方法“product_url”
【发布时间】:2019-06-12 23:05:54
【问题描述】:

在 Rails 上调试我的第一个项目时出现以下错误:

NoMethodError(未定义的方法 `product_url' 用于# 你的意思是? products_url):

app/controllers/products_controller.rb:13:in `create'


class ProductsController < ApplicationController
  def show
    @product = Product.find(params[:id])
  end 

  def new
  end

  def create
      @product = Product.new(product_params)
      @product.save
      redirect_to @product
  end

  private
    def product_params
      params.require(:product).permit(:title, :price, :count)
    end
end

---------config/routes.rb------

Rails.application.routes.draw 做 得到“欢迎/索引” 资源:产品 根“欢迎#index”

结束

---------rake 路由----------

               Prefix Verb   URI Pattern                                                                              Controller#Action
        welcome_index GET    /welcome/index(.:format)                                                                 welcome#index
         new_products GET    /products/new(.:format)                                                                  products#new
        edit_products GET    /products/edit(.:format)                                                                 products#edit
             products GET    /products(.:format)                                                                      products#show
                      PATCH  /products(.:format)                                                                      products#update
                      PUT    /products(.:format)                                                                      products#update
                      DELETE /products(.:format)                                                                      products#destroy
                      POST   /products(.:format)  

【问题讨论】:

  • 如果您编辑您的问题(使用标签下方的edit 链接)以包括(1)config/routes.rb 的相关部分和(2)@ 的控制台输出,这可能会有所帮助987654325@.

标签: ruby-on-rails


【解决方案1】:

你需要初始化@product。可以这样做:

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

def set_document
  @document = Document.find(params[:id])
end

你可以用

搭建控制器
rails g scaffold_controller Document

查看 rails 是如何为模型生成类的。

在您的 routes.rb 中应该是

resources: products

【讨论】:

  • 谢谢,我应该在 routes.rb 中使用“资源”而不是“资源”
猜你喜欢
  • 2013-04-24
  • 2015-05-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-12-01
  • 2013-11-14
  • 2021-07-07
  • 2017-11-13
相关资源
最近更新 更多