0

我对 Rails 非常陌生,所以我认为我的问题很简单。我本质上在视图页面上有一个对象提交按钮(因此为指定的对象运行创建和保存)但是在选择按钮时我根本不希望视图改变(所以只保留已加载的同一页面)。我在我的对象控制器中编辑创建操作时遇到问题,因此视图不会发生任何事情(这甚至可能吗?或者是每个操作都必须出现一个新视图的想法)。

感谢你的帮助!丽莎

4

3 回答 3

1

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

class YourController < ApplicationController

   def index
   end

   def youraction
   end
end

,然后在 routes.rb 中设置一个路由到它

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

remote: true

表单标签的选项。

于 2013-01-10T04:58:06.653 回答
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
于 2013-01-09T23:06:38.360 回答
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');
      }
    });
  });
}
于 2013-01-10T02:59:31.463 回答