0

Иногда, когда я отправляю форму, а затем возвращаюсь обратно в свой браузер, она отображает всю форму в два раза (см. Снимок экрана). Не уверен, что ее код представления или контроллера, вызывающий это, но я не могу его изобразить вне.Rails Form Renders Twice

Благодаря

occasions_controller.rb

def create 
    @user = current_user 
    @occasion = Occasion.new(params[:occasion]) 
    @occasion.user = User.find(current_user.id) 
    if @occasion.save 
     redirect_to occasions_path 
    else 
     render :new 
    end 
    end 

user_steps/occasions.html.erb

<%= simple_form_for @user, url: wizard_path do |f| %> 
    <div id="single_module"> 
    <div class="pitch"> 
    <h2 class="signup">Step 3: Your first Occasion!</h2> 
    </div> 
    <div id="input1" style="margin-bottom:4px;" class="clonedInput"> 
    <p>*Just one to get you started, after completion of the sign up process you will have a chance to utilize our occasion wizard to add as many events as you like! (exciting, we know)</p> 
    <ul class="testss1"> 
     <%= f.simple_fields_for :occasions do |occasion_o| %> 
     <li><%= occasion_o.input :name, :placeholder => 'Enter occasion Name', :hint => ('Examples: Anniversaries, Birthdays, Graduations, Mothers day, Fathers day, Valentines day, Weddings, Holidays') %></li> 
     <li><%= occasion_o.input :pname, :label => 'Persons Name', :placeholder => '(optional)' %></li> 
     <li><%= occasion_o.input :dateg, :label => 'Date',:as => :date_picker, :input_html => { :class => 'special' } %></li> 
     <li><%= occasion_o.input :recurring, :as => :radio_buttons, :label => 'Remind me of this event every year?' %></li> 
    <h3>Top 3 Interests</h3> 

     <li class="tes1"><%= occasion_o.association :interests, :label => false, :as => :check_boxes %></li></ul> 
    <%end%> 
    </br> 
    </div> 
     <%= link_to "skip this step", next_wizard_path %> 
     <%= f.button :submit, 'Submit' %> 
    </br> 
    </br> 
    </br> 

enter image description here

ответ

0

Похоже, ваш пользователь имеет два случая, привязанные к нему. Я хотел бы проверить длину случаев с заявлением Кладет в контроллере и проверьте журнал:

def create 
    @user = current_user 
    puts "The current length of occasions is #{ @user.occasions.length }" 
    @occasion = Occasion.new(params[:occasion]) 
    @occasion.user = User.find(current_user.id) 
    if @occasion.save 
     redirect_to occasions_path 
    else 
     render :new 
    end 
    end 
+0

я это делает .. как я могу предотвратить это добавление нового однажды представить его щелкнули затем кнопку назад на следущая страница? – js111

+0

Проблема в коде '<% = simple_form_for @user, ...'. Он будет отображать форму для всех ваших случаев, когда вы визуализируете это представление. Если целью этой формы является создание только нового события, тогда вы должны просто установить '@ occasion' в контроллер и не пропускать' @ user'. Я также вынул цикл 'f.simple_fields_for: timesions do | occasion_o |'. Просто выполните '<% = simple_form_for (@occasion) do | f | %> ... 'вместо этого. См. [Документация] (https://github.com/plataformatec/simple_form/) –