0

我一直在试图让Rails 4从验证的差异模型中显示多个表单。视图渲染罚款将全部的形式,但是当表单提交和内容的错误,我呈现后面的索引作用和它的展示单页多模型和验证Rails 4.2

形式第一个参数不能包含零或为空

我控制器

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 
+0

尝试渲染动作:“index”而不是 – chaitanya

回答

0

需要补充的地方显示错误 如。 从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 %> 
0

看来你已经给表单动作错误的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 %> 

请参阅我已更改表单中的网址,以便它转到您在问题中提供的操作。

+0

这是一个命名空间,命名为route – rilly009

+0

那么它会进入one_way动作吗?请粘贴该路线 – Sravan