当前位置: 首页 > 知识库问答 >
问题:

无法使模型在显示页面上进行提交和验证

洪英豪
2023-03-14

我正在做一个项目,我对rails很陌生,

我完全搞不清楚出了什么问题。我得到这个错误。

产品中的命名错误#索引

未初始化常量ProductsController::Offer

本质上,我有一个我试图实现的功能。

在我的产品表中,我有一个名为保留价格的列,我希望用户在产品页面的表单上提交一个数字,然后根据保留价格对其进行验证,如果接受,则将其添加到购物车中,如果不是flash,请输入更高的报价,

问题是我似乎无法弄清楚如何让模型和控制器协同工作。

我整个星期都在做这个,但我还是不知道。

我想知道是否有人可以查看我的代码,看看我缺少了什么,因为对于视图页面,我得到了NilClass: Class的未定义方法“model_name”的错误,我确信我为表单输入了正确的模型,如果我能做到这一点,我可以快速完成其余的工作,但我不知道我缺少了什么。

报价控制器。rb类报价控制器

属性:产品,:报价,:保留价格

def new@报价=报价。新建结束

end

提供型号。rb型

   class Offer < ActiveRecord::Base

属于:产品有很多:保留价格

属性:产品,:报价,:保留价格

validates_presence_of:offer validate:确保_满足_reserve_价格

私人def确保_符合_reserve_价格(如果金额)

私人def reserve_price产品。保留价格结束

定义your\u offer@your\u offer=offer。新

结束

def new@offer=Offer.new=:your_offer结束

 end

产品索引视图文件

   class ProductsController < ApplicationController

before_filter:身份验证,:除外=

/productsproducts.xml

def index@offer=Offer.new

@products = Product.search(params[:search_query])

respond_to do |format|
  format.html # index.html.erb
  format.xml  { render :xml => @products }
end

结束

#GET/products/1#GET/products/1。xml定义显示

  @product = Product.find(params[:id])


respond_to do |format|
  format.html # show.html.erb
  format.xml  { render :xml => @product }
end

结束

#GET/products/new#GET/products/new。xml def new@product=product。新

respond_to do |format|
  format.html # new.html.erb
  format.xml  { render :xml => @product }
end

结束

#GET/products/1/edit def edit@product=product。查找(参数[:id])结束

#邮政/产品#邮政/产品。xml def create@product=current\u用户。产品。新(参数[:产品])

respond_to do |format|
  if @product.save
    format.html { redirect_to(@product, :notice => 'Product was successfully created.') }
    format.xml  { render :xml => @product, :status => :created, :location => @product }
  else
    format.html { render :action => "new" }
    format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
  end
end

结束

#PUT/products/1#PUT/products/1。xml def update@product=product。查找(参数[:id])

respond_to do |format|
  if @product.update_attributes(params[:product])
    format.html { redirect_to(@product, :notice => 'Product was successfully updated.') }
    format.xml  { head :ok }
  else
    format.html { render :action => "edit" }
    format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
  end
end

结束

#删除 /products/1#删除 /products/1.xmldef销毁@产品=Product.find(参数[: id])@product.destroy

respond_to do |format|
  format.html { redirect_to(products_url) }
  format.xml  { head :ok }
end

结束结束

产品控制器。rb型

class ProductsController < ApplicationController
  before_filter :authenticate, :except => [:index, :show]

  # GET /products
  # GET /products.xml
  def index
    @products = Product.search(params[:search_query])

    respond_to do |format|
      format.html # index.html.erb
      format.xml  { render :xml => @products }
    end
  end

  # GET /products/1
  # GET /products/1.xml
  def show
    @product = Product.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml  { render :xml => @product }
    end
  end

  # GET /products/new
  # GET /products/new.xml
  def new
    @product = Product.new

    respond_to do |format|
      format.html # new.html.erb
      format.xml  { render :xml => @product }
    end
  end

  # GET /products/1/edit
  def edit
    @product = Product.find(params[:id])
  end

  # POST /products
  # POST /products.xml
  def create
    @product = current_user.products.new(params[:product])

    respond_to do |format|
      if @product.save
        format.html { redirect_to(@product, :notice => 'Product was successfully created.') }
        format.xml  { render :xml => @product, :status => :created, :location => @product }
      else
        format.html { render :action => "new" }
        format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
      end
    end
  end
 # PUT /products/1
 # PUT /products/1.xml
 def update
   @product = Product.find(params[:id])

   respond_to do |format|
     if @product.update_attributes(params[:product])
       format.html { redirect_to(@product, :notice => 'Product was successfully updated.') }
       format.xml  { head :ok }
     else
       format.html { render :action => "edit" }
       format.xml  { render :xml => @product.errors, :status => :unprocessable_entity }
     end
   end
 end

 # DELETE /products/1
 # DELETE /products/1.xml
 def destroy
   @product = Product.find(params[:id])
   @product.destroy

   respond_to do |format|
     format.html { redirect_to(products_url) }
     format.xml  { head :ok }
   end
 end
       end

有什么帮助吗?

非常感谢我在这方面已经有一段时间了,还没有弄清楚!

共有1个答案

万俟玉书
2023-03-14

如果我正确理解你的问题:

>

  • 访问产品时显示错误#show
  • 您希望在产品#显示页面中包含报价表

    在这种情况下,您需要在ProductsController show操作中初始化@offer变量,如下所示:

    @offer = Offer.new
    

    添加

    接下来的问题是:ProductsController::Offer未知,因为您有一个Offer模型,所以它不应该是未知的。我刚刚尝试将您的报价表单包含到一个show action中,它使其正常运行,此外,您还使用一个新的报价实例初始化字段。(可能是一个数量?)。无论如何,我无法从您的代码片段中看出为什么您的控制器中没有提供模型。你能提供完整的来源吗?

    我第一次怀疑你的奇怪的私人方法是在Offer

     def your_offer
         @your_offer = Offer.new
    
       end
    
    def new
      @offer = Offer.new = :your_offer
    end
    

    是原因,但我已经包括了它们,表格效果很好。但是我,他们到底应该怎么做?

  •  类似资料:
    • @将有效的打印信息发送到控制台,但不发送到页面 当我的字段有错误@Valid print info到控制台时,为什么不在第页? 字段hotelName上的对象formData中的字段错误:拒绝的值[];代码[Size.formData.hotelName, Size.hotelName, Size.java.lang.String, size];参数[org.springframework.con

    • bean名称'user'的BindingResult和普通目标对象都不能作为请求属性使用 Apr 05 2019 9:18:13 AM org.apache.catalina.core.StandardWrapperValve调用严重:在路径[/DataVisualization]的上下文中servlet[SpringController]的servlet.service()引发异常[处理JSP

    • 问题内容: 我有一个设置为MSDOS终端样式的聊天机器人。用户键入他们的响应,然后按Enter。我发现当我用“ display:none;”标记按钮时 它会导致页面在多个浏览器上重新加载(我的Windows chrome浏览器无法重新加载。不知道为什么)。如何隐藏按钮,但表单和代码仍能正常运行?我宁愿不使用“ position:absolute;” 将其发送到屏幕之外。 HTML: JAVASCR

    • 问题内容: 这应该很简单,但是却让我发疯。我有一个用ajax提交的html5表单。如果输入的值无效,则会弹出一个提示您的信息。在运行ajax提交之前,如何检查条目是否有效? 形成: 提交: 问题答案: 默认情况下,jQuery对HTML5验证一无所知,因此您必须执行以下操作:

    • 我试图创建一个简单的Spring Boot应用程序 我创建了Spring Boot应用程序类、配置类、控制器类和index.html。 我添加了Thymeleaf依赖项,并将html页面放在resources文件夹下(\src\main\resources\templates\index.html) 但当我运行应用程序时,它会给出一个错误 Thymeleaf的WebConfiguration in

    • 将“然后向我显示页面”这一行添加到cucumber场景中,在我同事的计算机上使用相同的设置,但在我的计算机上则不然。实际上,添加暂停步骤定义并调用它似乎被完全忽略了。 步骤定义: 功能: 命令行: 使用Firefox 16.02(避免17中的错误) 两台机器都有git-fetch'd,拉取,捆绑安装,所以所有的宝石都是相同的,都使用Rbenv版本* 1.9.3-p327-perf。我可能错过了一些