#ruby-on-rails #ajax #forms
#ruby-on-rails #ajax #формы
Вопрос:
Я создал эту форму почти полностью с нуля и AJAX, поэтому, я полагаю, она не работает.
Но я создаю экземпляр своей формы в своем контроллере таким образом..
def skip_to_end
@card_signup ||= CardSignup.new(params[:card_signup])
respond_to do |wants|
wants.html { redirect_to new_card_signup_path }
wants.json { render :json => { :html => (render_to_string :partial => '/card_signups/new_form') } }
end
end
Форма выглядит следующим образом :
- form_for @card_signup do |f|
= f.text_field :first_name, :style => "width: 166px;", :value => "first name", :rel => "first name"
%div{:class => 'error_message'}
....
И когда я пытаюсь сохранить его наполовину завершенным, оно переходит к моему create
действию :
def create
@card_signup = current_user.build_card_signup(params[:card_signup])
if @card_signup.valid?
respond_to do |wants|
#wants.html { redirect_to disclaimer_card_signup_path, :locals => { :card_signup => @card_signup } }
wants.json { render :json => { :html => (render_to_string :partial => 'disclaimer') } }
end
else
respond_to do |wants|
#wants.html { redirect_to new_card_signup_path }
wants.json { render :json => {:errors => @card_signup.errors, :html => (render_to_string :partial => '/card_signups/new_form') } }
end
end
end
Затем происходит сбой и возврат к исходной форме, но со всеми очищенными формами.
Как я могу сделать так, чтобы поля были по крайней мере предварительно заполнены тем, что было в них ранее?
Комментарии:
1. вас может заинтересовать это: rubygems.org/gems/rails_form_autosave
2. в противном случае, я боюсь, вам придется передавать все значения в вашем json и заполнять им форму.
3. Ах, мне действительно нравится идея сохранения форм в user_sessions, но это было скопировано прямо с вашего github, »
This gem is still in early beta. It is not recommended to use it in a production environment
»4. Эхе, это скорее отказ от ответственности. Конечно, для этого нужно еще несколько тестов и т.д… Просто хотел поделиться с вами идеей. Попробуйте, это уже работает.