2010-12-23 13 views
5

मैं एक मॉडल 'उपयोगकर्ता' के साथ एक मार्ग परीक्षण rails3 एप्लिकेशन बनाया:नियंत्रक नेमस्पेस और रूटिंग मुद्दा

rails new routing_test_app 
rails generate model User name:string 
rails generate scaffold_controller admin/user 
rake db:migrate 

जोड़ा गया routes.db रहे हैं:

namespace :admin do 
    resources :users 
end 

रेक मार्गों

admin_users GET /admin/users(.:format)   {:action=>"index", :controller=>"admin/users"} 
admin_users POST /admin/users(.:format)   {:action=>"create", :controller=>"admin/users"} 
new_admin_user GET /admin/users/new(.:format)  {:action=>"new", :controller=>"admin/users"} 
edit_admin_user GET /admin/users/:id/edit(.:format) {:action=>"edit", :controller=>"admin/users"} 
admin_user GET /admin/users/:id(.:format)  {:action=>"show", :controller=>"admin/users"} 
admin_user PUT /admin/users/:id(.:format)  {:action=>"update", :controller=>"admin/users"} 
admin_user DELETE /admin/users/:id(.:format)  {:action=>"destroy", :controller=>"admin/users"} 

विचार/व्यवस्थापक/उपयोगकर्ता/_form.html.erb

<%= form_for(@admin_user) do |f| %> 
    <% if @admin_user.errors.any? %> 
    <div id="error_explanation"> 
     <h2><%= pluralize(@admin_user.errors.count, "error") %> prohibited this admin_user from being saved:</h2> 

     <ul> 
     <% @admin_user.errors.full_messages.each do |msg| %> 
     <li><%= msg %></li> 
     <% end %> 
     </ul> 
    </div> 
    <% end %> 
    <%= f.text_field :name %> 
    <div class="actions"> 
    <%= f.submit %> 
    </div> 
<% end %> 

जब मैं करने के लिए जाना 'http: // localhost: 3000/व्यवस्थापक/उपयोगकर्ता/नई':

undefined method `users_path' for #<#<Class:0x0000010116ca90>:0x000001011588d8> 

निकाले स्रोत (लाइन # 1 के आसपास):

1: <%= form_for(@admin_user) do |f| %> 
2: <% if @admin_user.errors.any? %> 
3:  <div id="error_explanation"> 
4:  <h2><%= pluralize(@admin_user.errors.count, "error") %> prohibited this admin_user from being saved:</h2> 

उत्तर

5

ऐसा इसलिए है क्योंकि @admin_user एक User वस्तु है, इसलिए रेल है यूआरएल सहायक अनुमान लगा लेता users_path किया जाना है। यह एक साधारण फिक्स है। बस @admin_userform_for पैरामीटर [:admin, @admin_user] के साथ प्रतिस्थापित करें। आप कम पुनरावृत्ति के लिए आवृत्ति चर @user का नाम बदलना भी चाह सकते हैं। सरणी का उपयोग करने के लिए नामस्थानों का उपयोग करने में कमी है, इसलिए किसी को हमेशा इसे ध्यान में रखना चाहिए।

4
रेल एक त्रुटि फेंकता

form_for विधि नेस्टेड मार्गों का अनुमान नहीं लगाएगा। इस प्रयास करें:

form_for [:admin, @admin_user] do |f| 
संबंधित मुद्दे