开发者

Performing AJAX calls on the "new" controller

开发者 https://www.devze.com 2023-01-02 06:02 出处:网络
In my rails app, I want to have a sortable list as part of an object creation. The best practice suggested in Railscast adds the acts_as_list plugin and then initiates AJAX calls to update item positi

In my rails app, I want to have a sortable list as part of an object creation. The best practice suggested in Railscast adds the acts_as_list plugin and then initiates AJAX calls to update item position. However, AJAX calls won't work on an unsaved model, which is the situation with new.

One solution would be to save the model immediately on new and redirect to edit. This would have a nice side effect of persisting any change so the user could resume work should he be interrupted.

However, this solution adds the unwanted complexity of saving an invalid model, compromising rails' validation processes. Is there any better way to all开发者_开发技巧ow AJAX + validations without going into too much work?


Your new action has the same access to parameters that any other action has. You could pass parameters for the unsaved object back to the new action and an object re-initialized with attributes set could be returned back to the view. For instance:

controller:

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

Then in your view you'd have to send params to the new action via a link or a form post.


you can temporary store unsaved object in a 'session'.

like (this code must be in controller)

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

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号