2012-04-07 7 views
0

新しいユーザーを作成するには検索ビューを使用してユーザー情報を検索し、新しいユーザー作成フォームにデータを入力します。そのフォームを送信すると、mysqlに新しいユーザがローカルに作成されます。したがって、新しいユーザー作成フォームにはすでに値が設定されており、値を入力できます。しかし、そのフォームを送信した後、フィールドは空白であるというメッセージとともにページが戻ってきます。理由は分かりません。Rubyのレール - フォームが無効です

class UsersController < ApplicationController 


    def new 
     @user = User.new 
     @result = User.FindActiveDirectory(params[:user_id]) 
    if @result.empty? 
     render action: 'find', message: "Could not find a user with the id #{params[:user_id]}" 
else 
    return @result 

    end 

    end 

def find 
end 


def display_result 

    @result = User.FindActiveDirectory(params[:user_id]) 
    if @result.empty? 
     render action: 'find', message: "Could not find a user with the id #{params[:user_id]}" 
    end 
return @result 
end 


    def create 

     @user = User.new(params[:user_id]) 
     if @user.save 
       redirect_to users_added_url, :notice => "Signed up!" 
     else 
       render "new" 
     end 
    end 

end 

ユーザービューのfind(find.html.erb) - - HTTPのデバッグでは、私は、これらの値は、ユーザー/新

Form is invalid 

User can't be blank 
Firstname can't be blank 
Lastname can't be blank 
Email can't be blank 
Role can't be blank 

コントローラ/に掲載された参照

<h1>find User </h1> 
<p><%= notice %></p> 

<%= form_tag users_new_path do %> 
    <p> 
    <%= label_tag :Username %><br /> 
    <%= text_field_tag :user_id %> 
    </p> 
    <p class="button"><%= submit_tag " Search " %></p> 
<% end %> 

ユーザーが閲覧します新規作成(new.html.erb) -

<h1>Add user to access this system</h1> 

<% if @result %> 
<% @result.each do |key, values| %> 
<% if "#{key}" == "samaccountname" %> 
<% $username = values.to_s %> 
<% end %> 
<% if "#{key}" == "sn" %> 
<% $lastname = values.to_s %> 
<% end %> 
<% if "#{key}" == "givenname" %> 
<% $firstname = values.to_s %> 
<% end %> 
<% if "#{key}" == "mail" %> 
<% $email = values.to_s %> 
<% end %> 
<% end %> 
<% end %> 


<%= form_for @user do |f| %> 
    <% if @user.errors.any? %> 
    <div class="error_messages"> 
     <h2>Form is invalid</h2> 
     <ul> 
     <% for message in @user.errors.full_messages %> 
      <li><%= message %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 
<p> 
    <%= f.label :NT_Username %><br /> 
    <%= f.text_field :user_id, :value => $username %> 
    </p> 
<p> 
    <%= f.label :Firstname %><br /> 
    <%= f.text_field :firstname, :value => $firstname %> 
    </p> 
<p> 
    <%= f.label :Lastname %><br /> 
    <%= f.text_field :lastname, :value => $lastname %> 
    </p> 
    <p> 
    <%= f.label :Email %><br /> 
    <%= f.text_field :email, :value => $email %> 
    </p> 
    <p> 
    <%= f.label :Role %><br /> 
    <%= f.collection_select :role, User::ROLES, :to_s, :to_s, :include_blank => false %> 
    </p> 
    <p class="button"><%= f.submit %></p> 
<% end %> 

要求 - あなたのcreateあなたが行うには

Started POST "/users" for 10.15.21.28 at 2012-04-07 00:00:17 -0400 
Processing by UsersController#create as HTML 
    Parameters: {"utf8"=>"â", "authenticity_token"=>"RDxvWXxVwoJArNN1s4Q8M8cDr5rzjP4wNF4gOnteGGY=", "user"=>{"user_id"=>"jkills000", "firstname"=>"James", "lastname"=>"Kills", "email"=>"[email protected]", "role"=>"User"}, "commit"=>"Create User"} 

答えて

4

@user = User.new(params[:user_id]) 

は、これは正しくありません。それは次のようになります。

@user = User.new(params[:user]) 

あなたが要求して見ることができるように、params[:user]は、ユーザーに関するすべての情報が含まれています。 params[:user_id]は存在しません。

+0

偉大な..超高速のお返事ありがとう!何とか私はそれをuser_idに変更しました。出来た。 –

関連する問題