Ruby on rails 4 未打印任何FROM错误

Ruby on rails 4 未打印任何FROM错误,ruby-on-rails-4,Ruby On Rails 4,我有两个表格在页面中,如下所示,甚至我包括错误打印部分没有得到打印 <code> <div id="tabs-2"> <% if @user.personal %> <h2>Personal Details</h2> <div class="image"><%= image_tag (@user.personal.avatar_url(:thumb))if @user.personal.avat

我有两个表格在页面中,如下所示,甚至我包括错误打印部分没有得到打印

<code>
<div id="tabs-2">
    <% if @user.personal %>
    <h2>Personal Details</h2>
    <div class="image"><%= image_tag (@user.personal.avatar_url(:thumb))if @user.personal.avatar? %></div>
    <b>First Name</b>:  <%= @user.personal.first_name %><br>
    <b>Middle Name</b>:  <%= @user.personal.middle_name %><br>
    <b>Last Name</b>:  <%= @user.personal.last_name %><br>
    <b>Date of Birth</b> <%= @user.personal.date_of_birth %><br>
    <b>Gender</b>:  <%= @user.personal.gender %><br>
    <b>Category</b> <%= Category.find(@user.personal.category_id).category %><br>
    <b>Blood Group</b>:  <%= @user.personal.blood_group %><br>
    <b>Fathers_name</b>:  <%= @user.personal.fathers_name %><br>
    <b>Mothers_name</b>:  <%= @user.personal.mothers_name %><br>
    <% else %>
      <%= form_for([@user, Personal.new]) do |f| %>
        <% if @user.errors.any? %>
          <div id="error_explanation">
            <h2><%= pluralize(@user.errors.count, "error") %> prohibited this candidate from being saved:</h2>
            <ul>
            <% @user.personal.errors.full_messages.each do |message| %>
              <li><%= message %></li>
            <% end %>
            </ul>
          </div>
        <% end %>
         <p>
              <%= f.label :first_name  %><br/>
              <%= f.text_field :first_name %>
      </p>
        <p>
              <%= f.label :middle_name  %><br/>
              <%= f.text_field :middle_name %>
      </p>
        <p>
              <%= f.label :last_name  %><br/>
              <%= f.text_field :last_name %>
      </p>
      <p>
              <%= f.label :date_of_birth, "Date of Birth" %><br/>
              <%= f.date_select :date_of_birth, start_year: 1985, end_year: 1999  %>
      </p>
      <p>
              <%= f.label :gender %><br/>
              <%= f.select :gender, options_for_select(%w[M F O]) %>
      </p>
      <p>
              <%= f.label :blood_group %><br/>
              <%= f.select :blood_group, options_for_select(%w[AB A+ B+ O ]) %>
      </p>
      <p>
              <%= f.label :fathers_name %><br/>
              <%= f.text_field :fathers_name %>
      </p>
      <p>
              <%= f.label :mothers_name  %><br/>
              <%= f.text_field :mothers_name %>
      </p>
      <p>
              <%= f.label :category_id %></br>
              <%= select("personal", "category_id", Category.all.collect {|c| [c.category, c.id]}) %>
      </p>

      <p>
              <%= f.label :avatar %>
              <%= f.file_field :avatar %>
      </p>
      <p><%= f.submit "Submit", data: {confirm: "Are you sure information once submitted cant be modified ?"} %></p>
      <% end %>
  <% end %>
</code>
我不明白为什么验证失败时错误没有打印出来 出现在personal.rb中

class Personal < ActiveRecord::Base
  # every personal information belongs to a particular user
  belongs_to :user
  # carrierwave uploader
  mount_uploader :avatar, AvatarUploader
  # validations
  validates :first_name, presence: true, length: { maximum: 24}
  validates :middle_name, length: { maximum: 24}
  validates :last_name, presence: true, length: { maximum: 24}
  validates :date_of_birth, presence: true
  validates :gender, presence: true, length: { maximum: 1}
  validates :category_id, presence: true
  validates :blood_group, presence: true, length: { maximum: 2}
  validates :fathers_name, presence: true, length: { maximum: 24}
  validates :mothers_name, presence: true, length: { maximum: 24}
  validates :avatar, presence: true
  end
这里有一些日志

Started POST "/users/36/personals" for 127.0.0.1 at 2014-07-11 23:57:20 +0530
Started POST "/users/36/personals" for 127.0.0.1 at 2014-07-11 23:57:20 +0530
Processing by PersonalsController#create as HTML
Processing by PersonalsController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"8qku1i/aIlz1aBdypnARzpiKuChWupPCMesjGoNmaTY=", "personal"=>{"first_name"=>"", "middle_name"=>"", "last_name"=>"", "date_of_birth(1i)"=>"1985", "date_of_birth(2i)"=>"7", "date_of_birth(3i)"=>"11", "gender"=>"M", "blood_group"=>"AB", "fathers_name"=>"", "mothers_name"=>"", "category_id"=>"1"}, "commit"=>"Submit", "user_id"=>"36"}
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"8qku1i/aIlz1aBdypnARzpiKuChWupPCMesjGoNmaTY=", "personal"=>{"first_name"=>"", "middle_name"=>"", "last_name"=>"", "date_of_birth(1i)"=>"1985", "date_of_birth(2i)"=>"7", "date_of_birth(3i)"=>"11", "gender"=>"M", "blood_group"=>"AB", "fathers_name"=>"", "mothers_name"=>"", "category_id"=>"1"}, "commit"=>"Submit", "user_id"=>"36"}
  User Load (0.1ms)  SELECT  `users`.* FROM `users`  WHERE `users`.`id` = 36  ORDER BY `users`.`id` ASC LIMIT 1
  User Load (0.1ms)  SELECT  `users`.* FROM `users`  WHERE `users`.`id` = 36  ORDER BY `users`.`id` ASC LIMIT 1
   (0.1ms)  BEGIN
   (0.1ms)  BEGIN
   (0.1ms)  ROLLBACK
   (0.1ms)  ROLLBACK
  Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE `personals`.`user_id` = 36 LIMIT 1
  Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE `personals`.`user_id` = 36 LIMIT 1
Redirected to http://localhost:3000/home
Redirected to http://localhost:3000/home
Completed 302 Found in 15ms (ActiveRecord: 0.4ms)
Completed 302 Found in 15ms (ActiveRecord: 0.4ms)




Started GET "/home" for 127.0.0.1 at 2014-07-11 23:57:20 +0530
Started GET "/home" for 127.0.0.1 at 2014-07-11 23:57:20 +0530
Processing by UserDashboardController#home as HTML
Processing by UserDashboardController#home as HTML
routes.rb

# http://www.quora.com/How-can-I-use-nested-routes-with-Devise
  devise_for :users, :controllers => {:registrations => "registrations"}, :path => 'accounts'
  # users has personal academics and applications hence nested routes
  resources :users do
    resources :personals
    resources :academics
    resources :applications
  end

  # user_dashboard controller
  post 'user_dashboard/personal_creator'
  # Controlpanel route
  get 'controlpanels/controlpanel'
  get 'controlpanels/resetranks'
  get 'controlpanels/generateranks'
  # verify routes
  get 'vusers/verify'
  # dashboard url shortening
  match '/home',  to: 'user_dashboard#home', via: 'get'
  match '/controlpanel',  to: 'controlpanels#controlpanel', via: 'get'
  match '/verify', to: 'vusers#verify', via: 'get'
  # routes for streams
  resources :streams
  # routes for categories
  resources :categories
  # routes for cutoffs
  resources :cutoffs

有一种更干净的方法可以做到这一点。在控制器方法中(假设它在家中),您可以执行以下操作:

def home
  @user = User.find(params[:id]) #your logic to find user
  @personal = @user.build_personal #assuming you have user has_one personal association
end
然后以你的形式

<%= form_for([@user, @personal]) do |f| %>
    <% if @personal.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@personal.errors.count, "error") %> prohibited this candidate from being saved:</h2>
        <ul>
          <% @personal.errors.full_messages.each do |message| %>
            <li><%= message %></li>
          <% end %>
        </ul>
      </div>
    <% end %>
<% end %>
更新:

如果您的表单通过了验证,create_personal将简单地创建您的记录,在您的情况下,由于没有,它将简单地转到它下面的步骤,即重定向到home_路径,因此没有错误

你甚至可以在日志中看到它

User Load (0.1ms)  SELECT  `users`.* FROM `users`  WHERE `users`.`id` = 36  ORDER BY     `users`.`id` ASC LIMIT 1
(0.1ms)  BEGIN
(0.1ms)  BEGIN
(0.1ms)  ROLLBACK
(0.1ms)  ROLLBACK
Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE  `personals`.`user_id` = 36 LIMIT 1
Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE `personals`.`user_id` = 36 LIMIT 1
Redirected to http://localhost:3000/home
class PersonalsController

这就是答案吗?

这并没有解决我的问题,也没有显示任何错误,但感谢您重构我的code@SouravMoitra您可以显示您的日志和创建个人的控制器方法吗?@souravmotra您需要使用build_personal,然后检查它是否保存在数据库中,如果没有,则呈现您的新操作(表单)然后哪个会显示errorshow我是否呈现新动作(表单)?@souravmotra你的表单在哪里,我的意思是在哪个视图中,它在家里吗?在家里更新了它。您只需
呈现具有表单的操作
<%= form_for([@user, @personal]) do |f| %>
    <% if @personal.errors.any? %>
      <div id="error_explanation">
        <h2><%= pluralize(@personal.errors.count, "error") %> prohibited this candidate from being saved:</h2>
        <ul>
          <% @personal.errors.full_messages.each do |message| %>
            <li><%= message %></li>
          <% end %>
        </ul>
      </div>
    <% end %>
<% end %>
def create
  @user = User.find(params[:id]) # logic to find user
  @personal = @user.build_personal(personal_params)
  respond_to do |format|
    if @personal.save
      format.html { redirect_to @personal }
    else
      format.html { render :action => "home" }
    end
  end
end

private
def personal_params
  params.require(:personal).permit(:your_attributes)
end
User Load (0.1ms)  SELECT  `users`.* FROM `users`  WHERE `users`.`id` = 36  ORDER BY     `users`.`id` ASC LIMIT 1
(0.1ms)  BEGIN
(0.1ms)  BEGIN
(0.1ms)  ROLLBACK
(0.1ms)  ROLLBACK
Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE  `personals`.`user_id` = 36 LIMIT 1
Personal Load (0.1ms)  SELECT  `personals`.* FROM `personals`  WHERE `personals`.`user_id` = 36 LIMIT 1
Redirected to http://localhost:3000/home
class PersonalsController < ApplicationController

def create
     @user = current_user
     @personal = @user.build_personal(personal_params)
     if @personal.save
       flash[:notice] = "success"
     else
       flash[:alert] = @personal.errors.full_messages.each{|e|}
     end
     redirect_to home_path

  end

end