代码之家  ›  专栏  ›  技术社区  ›  shmichael

在“新”控制器上执行AJAX调用

  •  1
  • shmichael  · 技术社区  · 14 年前

    在我的rails应用程序中,我希望有一个可排序列表作为对象创建的一部分。中建议的最佳实践 Railscast 添加 acts_as_list 插件,然后启动AJAX调用以更新项目位置。但是,AJAX调用在未保存的模型上不起作用,这就是 new .

    一种解决方案是立即保存模型 新的 并重定向到 edit

    然而,这个解决方案增加了保存无效模型的不必要的复杂性,从而影响了rails的验证过程。有没有更好的方法允许AJAX+验证而不需要太多的工作?

    2 回复  |  直到 14 年前
        1
  •  1
  •   Patrick Klingemann    14 年前

    你的 操作对参数的访问权限与任何其他操作相同。可以将未保存对象的参数传递回 新的 动作和对象

    控制器:

    class WidgetsController < ApplicationController
      def new
        @widget = params.has_key?(:widget) ? Widget.new(params[:widget]) : Widget.new
      end
      ..
    end
    

        2
  •  0
  •   zed_0xff    14 年前

    可以在“会话”中临时存储未保存的对象。

    like(此代码必须在控制器中)

    my_model = MyModel.new(params[:my_model])
    session[:my_model_tmp] = my_model