Ruby on Rails:如何在不切换视图的情况下创建对象

时间:2013-01-09 22:50:41

标签: ruby-on-rails

我对rails非常不熟悉,所以我认为我的问题非常简单。我基本上在视图页面上有一个对象提交按钮(因此运行创建并保存指定的对象)但是在选择按钮时我不希望视图完全改变(所以只留下已经加载的同一页面) )。我在我的对象控制器中编辑创建操作时遇到了问题,因此视图没有任何反应(这是否可能?或者是每个操作必须出现新视图的想法)。

感谢您的帮助! 丽莎

3 个答案:

答案 0 :(得分:1)

因此,您希望存储该对象,并且您不希望更改该URL。

在您的创建操作中,保存对象后。重定向到该视图。

如下所示:

$   if @object.save
    redirect_to :action => "index"
    # or
    # redirect_to object_path # you can set this in config/routes.rb
    # or
    # redirect_to :action => "show", :id => @object.id

答案 1 :(得分:1)

您可以使用ajax请求执行此操作:

在控制器中创建一个动作来完成创建所需对象的工作:

class SomeController < ApplicationController
  def index
    #this is your view controller
  end

  def youraction
    #create an object
    render :nothing => true
  end
end

然后使用执行ajax请求的javascript函数绑定您的按钮:

HTML

<button id="submit_button">Submit</button>

的Javascript

$(document).ready(function (){
  $('#submit_button').click(function(){
    $.ajax({
      url: 'url_to_the_controller/youraction',
      type: 'POST'
      success: function (){
        alert('success');
      },
      error: function (){
        alert('error');
      }
    });
  });
}

答案 2 :(得分:1)

这可以通过在控制器中创建一个动作来完成,

class YourController < ApplicationController

   def index
   end

   def youraction
   end
end

,然后在routes.rb中设置一条路径

然后只需将表单设置为指向该网址并添加

即可
remote: true

表单标记的选项。