Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/60.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-调用NEW时,是否在显示窗体之前创建记录?_Ruby On Rails_Ruby On Rails 3 - Fatal编程技术网

Ruby on rails Rails-调用NEW时,是否在显示窗体之前创建记录?

Ruby on rails Rails-调用NEW时,是否在显示窗体之前创建记录?,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,这就是我要做的 当用户单击“新建注释”时。。我希望当用户可以开始键入注释时,可以将其带到一个页面,并使用AJAX将其保存到服务器 问题是,每次页面保存时,都会产生新的注释 这让我相信,当Rails获得DEF NEW控制器时,我需要Rails首先创建一个新的注释记录,然后重定向到该新注释的编辑控制器,在该控制器中,用户可以使用AJAX创建/编辑注释 想法?谢谢。我曾经遇到过同样的问题,首先创建便条可能是个好主意 另一种方法是将用户发送到新操作。第一次保存时,您将新对象作为JSON对象发送回,并将表

这就是我要做的

当用户单击“新建注释”时。。我希望当用户可以开始键入注释时,可以将其带到一个页面,并使用AJAX将其保存到服务器

问题是,每次页面保存时,都会产生新的注释

这让我相信,当Rails获得DEF NEW控制器时,我需要Rails首先创建一个新的注释记录,然后重定向到该新注释的编辑控制器,在该控制器中,用户可以使用AJAX创建/编辑注释


想法?谢谢。

我曾经遇到过同样的问题,首先创建便条可能是个好主意

另一种方法是将用户发送到新操作。第一次保存时,您将新对象作为JSON对象发送回,并将表单的操作替换为该记录的更新url,并将表单的方法设置为put

这样,您就不会在数据库中出现空记录(在您的用例中,您可能恰恰需要这样做,以便用户以后可以继续记录)

只要我的两分钱

好的,实现这一点的方法如下:

形式 控制器
如果你真的想使用#new来创建一个便笺并保存它,那么你只需简单地这样做

def new
  @note = Note.create # instead of Note.new
end
Rails将像#编辑操作一样显示此注释,因此注释id将位于隐藏字段中。然后,当您发送Ajax调用时,您将调用#edit。如果希望在关闭javascript时保留#new的行为,那么可能需要创建一个不同的操作

def new
  @note = Note.new
end

def new_js
  @note = Note.create
end

在加载包含指向new_note链接的页面时,请包含一些将链接更改为new_js_note的javascript。因此,当JS关闭时,您将获得标准的新表单。当JS打开时,您会得到一个表单,它基本上是在编辑一个先前存在的空白注释。

谢谢,这就是上面提到的想法。关于实际实现这一点有什么建议吗?这就是我被卡住的地方。我已经更新了上面的帖子,但是monocle的解决方案可能会简单一点。很好,这是个好主意。非常感谢。现在试一试。问题,如果这个控制器注释属于项目,我如何在我的路线中包含新的_j?嗯。。不要过多使用嵌套管线。也许--resources:projects{resources:notes{member{post:new_js}}}hmm使用Rails3。还没弄明白。六羟甲基三聚氰胺六甲醚
class ExampleController
  ...

  def create
    #
    # respond with the json object if format = json,
    # see the form above I'm passing the format with :url parameter in form_for
    #
    respond_with(resource) do |format|
      format.json { render :json => resource }
    end
  end
end
def new
  @note = Note.create # instead of Note.new
end
def new
  @note = Note.new
end

def new_js
  @note = Note.create
end