0
我正在嘗試使用電子郵件在「顯示」我的「用戶」控制器的操作中找到用戶。我在哪裏得到這個錯誤。未定義的方法名稱爲零:NilClass
NoMethodError in UsersController#show
undefined method `name' for nil:NilClass
我現在用奇異的資源路由作爲無奇資源我是越來越錯誤,如
Routing Error
No route matches {:action=>"show", :controller=>"users", :id=>#<User name: "sandip", email: "[email protected]", address: nil, encrypted_password: "605b20529364629b7668d55006310536", created_at: "2011-10-07 04:23:23", updated_at: "2011-10-07 04:23:23">}
現在我的routes.rb文件看起來像這樣。
Demo::Application.routes.draw do
resource :user
resources :sessions, :only => [:new, :create, :destroy]
match '/signout', :to => 'sessions#destroy'
match 'user/:email', :to => 'users#show'
root :to => "sessions#new"
end
通過此路由,「路由錯誤」消失,但出現了新的「NoMethodError」錯誤。
我的用戶控制器(唯一的問題相關的部分)
class UsersController < ApplicationController
def show
@user = User.find_by_email(params[:email]) if params[:email].present?
@title = @user.name
end
end
爲了找到用戶使用電子郵件我已經添加了我的用戶模型的方法。
我的用戶模型(唯一的問題相關的部分)
class User < ActiveRecord::Base
def to_param # overridden
"#{email}"
end
end
現在,當用戶登錄,在瀏覽器的URL就這樣產生了。
http://localhost:3000/user?format=sandip%40example.com
我得到「NoMethodError」錯誤。 但是,當我手動更改「格式」到「電子郵件」的網址,一切工作正常。
http://localhost:3000/user?email=sandip%40example.com
我怎樣才能得到「電子郵件」而不是「格式」的網址?有人可以幫忙嗎?
能否請你建議,我應該做些什麼改變來獲得你所提到的路線。否則,我該如何傳遞電子郵件參數。 – sandip
將元素名稱從格式更改爲電子郵件並使用get操作提交表單。這應該使用電子郵件作爲參數調用show方法。 – Jayendra
感謝您的建議。實際上,我沒有在我的erb文件中的任何地方提到「格式」。我是Rails新手,無法弄清楚哪裏可以改變。請幫助我。 – sandip