2013-04-28 3 views
0

Когда я ввожу данные о методе создания и данные пользователя недействительны, входы пользователя не сохраняются после render 'new'. Я хотел бы, чтобы недействительные пользовательские входы были сохранены. Есть ли у кого-нибудь идеи о том, как я могу это исправить?Сохранение записи пользователя после завершения проверки

На боковой ноте мой объект ContactForm не связан ни с чем с базой данных, поэтому я не использую save ?.

class ContactController < ApplicationController 
    def new 
     @contact_form = ContactForm.new 
    end 

    def create 
     @contact_form = ContactForm.new(params[:contact_form]) 

     if @contact_form.valid? && verify_recaptcha(model: @contact_form , message: EBM::RECAPTCHA_ERROR) 
     redirect_to contact_create_path 
     else 
     render :action => 'new' 
     end 
    end 
end 

Редактировать: реорганизован на основе предложений mind.blank. Однако проблема не устраняет проблему.

Edit2: Добавлен вид:

<div id="quote" class="hero-unit centerpiece"> 
    <form action="/contact" method="post" class="form-horizontal"> 
     <fieldset> 

    <!-- Form Name --> 
    <h1 class="form-header">Contact Us</h1> 
    <!-- Text input--> 
    <%= render 'shared/error', object: @contact_form %> 
    <div class="control-group"> 
     <label class="control-label">Your Name</label> 
     <div class="controls"> 
      <input id="name" name="contact_form[name]" type="text" placeholder="Your Name" class="input-xlarge" > 

     </div> 
    </div> 

    <!-- Text input--> 
    <div class="control-group"> 
     <label class="control-label">Your Email</label> 
     <div class="controls"> 
      <input id="email" name="contact_form[email]" type="text" placeholder="Your Email" class="input-xlarge" required="" > 
     </div> 
    </div> 

    <!-- Textarea --> 
    <div class="control-group"> 
     <label class="control-label">Your Message</label> 
     <div class="controls">      
      <textarea id="Your Message" class="message-area" name="contact_form[user_message]" required=""></textarea> 
     </div> 
    </div> 
    <div class="recaptcha"> 
     <%= recaptcha_tags %> 
    </div> 
    <%= submit_tag "Submit", class: "btn btn-large btn-primary" %> 
     </fieldset> 
    </form> 
</div> 
+0

Вы покажете свое имя? – AlexBrand

+0

@alexBrand Просто добавил. – user886596

+0

Вы не используете помощников рельсов, чтобы создать свою форму. Ваши поля ввода в основном жестко закодированы, а рельсы не имеют возможности заполнять поля ввода. – AlexBrand

ответ

0

Попробуйте удалить Hash.new из ваших new действий:

def new 
    @contact_form = ContactForm.new 
end 

Также вы можете использовать slice для получения требуются Титулы:

def create 
    @contact_form = ContactForm.new(params.slice(:name, :email, :user_message)) 
    ... 
end 

Хотя обычно вы можете просто пройти в params[:contact_form]

+0

Я реорганизовал код в вопросе на основе ваш ответ и внес соответствующие изменения. К сожалению, это не устранило мою проблему. – user886596

Смежные вопросы