Одностраничная множественная модель и рельсы проверки 4.2

Я пытаюсь заставить Rails 4 отображать несколько форм из разностных моделей с проверками. представление отлично отображает все формы, но когда форма отправлена ​​и ошибка содержимого, я отобразил действие индекса, и его шоу

Первый аргумент в форме не может содержать nil или быть пустым

Мой контроллер

def index
    @oneWay = OneWay.new
    @twoWays = TwoWay.new
end

def one_way
    @form = OneWay.new(one_params)

   if @form.valid?
   else
    render :index
    end
end

Мой вид

 <%= simple_form_for @twoWays, url: fleet_return_path, as: 'two_way',    validate: true do |f| %>

я пытался

<%= simple_form_for @twoWays, url: fleet_return_path, as: 'two_way',    validate: true do |f| %>

но он отображает, но без ошибок проверки.

маршрут

constraints(FleetSubdomain) do
  namespace :fleet, path: '/' do
    get '/' => 'fleet#index', as: 'index'
    post 'one_way' => 'fleet#one_way',  :as => 'one_way'
    post 'return' => 'fleet#returning',  :as => 'return'
  end

 end

person rilly009    schedule 08.07.2016    source источник
comment
попробуйте действие рендеринга: index вместо этого   -  person chaitanya    schedule 08.07.2016


Ответы (2)


Нужно добавить место для отображения ошибок, например. Из http://ruby.railstutorial.org/book/ruby-on-rails-tutorial

/app/views/shared/_error_messages.html.erb

 <% if object.errors.any? %>
  <div id="error_explanation">
   <div class="alert alert-error">
     The form contains <%= pluralize(object.errors.count, "error") %>.
   </div>
  <ul>
   <% object.errors.full_messages.each do |msg| %>
    <li>* <%= msg %></li>
   <% end %>
 </ul>
</div>
<% end %>

Ваше мнение

<%= simple_form_for @twoWays, url: fleet_return_path, as: 'two_way',    validate: true do |f| %>
      <%= render 'shared/error_messages', object: f.object %>
<% end %>
person chaitanya    schedule 08.07.2016

Кажется, вы указали неправильный URL-адрес в действии формы, в форме у вас есть «fleet_return_path», а действие, которое вы показываете, one_way, у вас есть такой именованный маршрут или вы хотите сделать это вместо этого,

<%= simple_form_for @twoWays, url: one_way_path, as: 'two_way',    validate: true do |f| %>

 <% if f.errors.any? %>
      <div id="error_explanation">
       <div class="alert alert-error">
         The form contains <%= pluralize(f.errors.count, "error") %>.
       </div>
      <ul>
       <% f.errors.full_messages.each do |msg| %>
        <li>* <%= msg %></li>
       <% end %>
     </ul>
    </div>
    <% end %>
   ---- ------- ----------
<% end %>

Обратите внимание, что я изменил URL-адрес в форме, чтобы он переходил к действию, которое вы указали в вопросе.

person Sravan    schedule 08.07.2016
comment
Это пространство имен с именем route - person rilly009; 08.07.2016
comment
так это будет действие one_way? Пожалуйста, вставьте этот маршрут - person Sravan; 08.07.2016