2011-01-11 13 views
2

私のルビーバージョンは1.9.1です。これはルビーの最初のプロジェクトです。私は開発しようとしています。私はいくつかの詳細を入力して、レコードを保存しようとする未定義のローカル変数またはメソッド `request '

iはエラー 「NameError(未定義のローカル変数やメソッドrequest' for #<User:0x3ab7220>): app/models/user.rb:36:inログイン `サインアップ中:7 アプリ/コントローラ/ user_controller.rb '」を取得しています。ここでは、コントローラクラスがある

class UserController < ApplicationController 
    def signup 
    if request.post? and params[:user] 
     @user = User.new(params[:user]) 
     if @user.save 
     session[:user] = @user 
     flash[:notice] = "User #(@user.login) created !" 
     redirect_to :action =>"home" 
     else 
     flash[:error]="Signup unsuccessful" 
     @user.clear_password! 
     end 
    end 
    end 

    def home 
    @title = "Bookshelf - User Home" 
    end 

マイsignup.html

<div id="signup_content"> 
<span class="title">Sign-up for a BookShelf account...</span> 
<% form_for :user, @user, :url => {:action => "signup" } do |f| %> 
    <%= error_messages_for 'user' %><br/> 

    <div class="signup_field"> 
     <label for="user_login">Login:</label> 
     <%= f.text_field :login %><br/> 
     </div> 

    <div class="signup_field"> 
     <label for="user_first_name">First Name:</label> 
     <%= f.text_field :first_name %><br/> 
    </div> 

    <div class="signup_field"> 
     <label for="user_password_confirmation">Password Confirmation:</label> 
     <%= f.password_field :password_confirmation %> 
    </div> 

    <%= submit_tag "Signup" %> 
<% end %> 

コメンターが指摘したように

application.html

<html> 
    <head> 
    <title><%= @title %></title> 
    <%= stylesheet_link_tag "style" %> 
    <%= javascript_include_tag :defaults %> 
    </head> 
    <body> 
    <div id="header"> 
     <div id ="logo_image"> 
      <%= link_to image_tag('main_logo.png'), 
      :controller=>'home', :action=>'index' %> 
     </div> 

     <% if !session[:user] %> 
      <%= render :partial=>"user/signin" %> 
     <% else %> 
      <div id ="user_menu"><%= link_to 'Logout',:controller=>'user',:action=>'logout'%> 
      </div> 
     <% end %> 
     <div style="clear: both;height:0px;"></div> 
    </div>   
    <%= render :partial=> "shared/sidebar" %> 
    <div id="Content"> 
     <% if flash[:notice] -%> 
     <div id="notice"><%= flash[:notice] %></div> 
     <% end -%> 
     <% if flash[:error] -%> 
     <div id="error"><%= flash[:error] %></div> 
     <% end -%> 
     <!-- <%= yield %> uncommenting solved the double rendering problem-->      
    </div> 
    </body> 
</html> 
+0

正確なエラーメッセージを提供してください... – Kunday

+0

エラーは 'user.rb'行36にあります。' user.rb'のソースを投稿してください。 – rfunduk

答えて

2

、あなたの誤差がuser.rbです。コントローラのrequestメソッドにアクセスしようとしていますが、その時点でUserクラスにいるため、アクセスできません。通常、モデルレイヤー(この場合はUser)は、他のレイヤー(コントローラーレイヤーとビューレイヤー)について知ってはいけません。コントローラーは、要求と応答に関連するものを処理するためのものです。 MVC in RailsまたはMVC in generalをお読みください。