में to_param को ओवरराइड करते समय मार्गों के साथ त्रुटि, जब मैं आईडी के रूप में ईमेल पते का उपयोग करने के लिए अपने उपयोगकर्ता मॉडल में to_param को ओवरराइड करने का प्रयास करता हूं तो मुझे अपने मार्गों में त्रुटि मिल रही है। ऐसा लगता है कि जब वह मार्ग से मिलान करने की कोशिश करता है तो आईडी के लिए पूरी ऑब्जेक्ट से मिलान करने का प्रयास किया जा रहा है। क्या कोई मुझे यह जानने में मदद कर सकता है कि मैं क्या खो रहा हूं?रेल 3.0: मॉडल
यहाँ त्रुटि है:
No route matches {:controller=>"users", :action=>"show", :id=>#<User id: 1, email: ....>}
यहाँ कैसे मैं कोड सेट अप किया है।
मॉडल/user.rb:
attr_accessible :email
def to_param
email
end
नियंत्रकों/users_controller.rb:
before_filter :get_user, :only=>[:show,:update,:edit,:destroy]
...
def get_user
@user = User.find_by_email params[:id]
end
config/routes.rb
resources :users
और यहाँ रेक मार्गों से उत्पादन है:
user GET /users(.:format) {:controller=>"users", :action=>"index"}
POST /users(.:format) {:controller=>"users", :action=>"create"}
new_user GET /users/new(.:format) {:controller=>"users", :action=>"new"}
edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"}
user GET /users/:id(.:format) {:controller=>"users", :action=>"show"}
PUT /users/:id(.:format) {:controller=>"users", :action=>"update"}
DELETE /users/:id(.:format) {:controller=>"users", :action=>"destroy"}
आप लिंक है, जो, इस त्रुटि की ओर जाता है कृपया दिखा।आपका सभी कोड सही है, इसलिए आपके लिंक – fl00r
में त्रुटि है समस्या समस्या को दिखाने, संपादित करने, अपडेट करने और नष्ट करने में है। तो या तो ब्राउज़र में पथ (/users/[email protected], या दृश्य में link_to को कॉल करने की कोशिश कर रहे हैं, जैसे <% = link_to "दिखाएँ", उपयोगकर्ता%>, या <% = link_to "संपादित करें" , edit_user_path (उपयोगकर्ता)%> – Bee