Ruby on rails 如何使用按钮在rails中发布?

Ruby on rails 如何使用按钮在rails中发布?,ruby-on-rails,post,button,controller,Ruby On Rails,Post,Button,Controller,因此,每次单击“购买”按钮时,我都试图创建一个新的“交易”,但似乎不起作用。我得到了错误“nil:NilClass的未定义方法”[] 你知道为什么会这样吗 谢谢 有几种方法可以调试: 查看控制台日志,查看在params散列中发布的内容 在create语句的顶部添加puts语句,以查看params变量中的内容,例如 控制器 def create puts params.inspect end 我怀疑您会发现params散列没有事务键,create方法应该是 def create @my_

因此,每次单击“购买”按钮时,我都试图创建一个新的“交易”,但似乎不起作用。我得到了错误“nil:NilClass的未定义方法”[]

你知道为什么会这样吗


谢谢

有几种方法可以调试:

  • 查看控制台日志,查看在params散列中发布的内容
  • 在create语句的顶部添加puts语句,以查看params变量中的内容,例如
  • 控制器

    def create
      puts params.inspect
    end
    
    我怀疑您会发现params散列没有
    事务
    键,create方法应该是

    def create
      @my_transaction = Transaction.new(
        buyer_id: params[:buyer_id],
        seller_id: params[:seller_id],
        comic_id: params[:comic_id]
    )
    end
    

    有两种方法可以调试此功能:

  • 查看控制台日志,查看在params散列中发布的内容
  • 在create语句的顶部添加puts语句,以查看params变量中的内容,例如
  • 控制器

    def create
      puts params.inspect
    end
    
    我怀疑您会发现params散列没有
    事务
    键,create方法应该是

    def create
      @my_transaction = Transaction.new(
        buyer_id: params[:buyer_id],
        seller_id: params[:seller_id],
        comic_id: params[:comic_id]
    )
    end
    

    params[:transaction]
    为零,您可以在日志中看到发送的参数(
    tail-f log/development.log
    ,如果服务器不记录)。在您的情况下,您可以访问所需的数据,如
    params[:comic_id]

    以下是一些提示:

    永远不要相信来自客户端的输入:
    :买家id=>当前用户.id
    在这里,攻击者可以发送任何id,因为
    按钮将创建一个html表单,可以使用devtool轻松访问该表单。而是在服务器端检查它。卖家id也是如此,您只需获取相关的漫画
    comic=comic.find参数[:comic\u id]


    您可能想考虑另一种API方法,例如“代码> POST /漫画/ 1 /Buy < /代码>,这是一个更安静的地方,您可以使用内置的路径帮助器来处理这个URL,比如“代码> BuySuxCICIXPATH(COMIC)

    > P> <代码> PARAM[[事务] 为NIL,您可以在日志中看到所发送的参数。(
    tail-f log/development.log
    如果服务器没有登录)。在您的情况下,您可以访问所需的数据,如
    params[:comic_id]

    以下是一些提示:

    永远不要相信来自客户端的输入:
    :buyer\u id=>current\u user.id
    在这里,攻击者可以发送任何id,因为
    按钮\u to
    助手将创建一个html表单,可以使用devtool轻松访问该表单。而不是在服务器端进行检查。卖家id也是如此,您只需获取相关的comic
    comic=comic.find参数[:comic\u id]


    你可能想考虑另一种API方法,比如“代码>邮政/漫画/ 1 /购买/代码>这是一个更安静的地方,你可以使用内置的路径帮助器来处理这个URL,比如“代码> BuythCoucIpPATH(COMIC)

    谢谢!就是这样!拼命工作:谢谢!正是这样!工作得很有魅力:)