2011-08-31 123 views
0

我一直在閱讀this resource以及this post試圖瞭解更多的路由(目前正在學習編程/ Rails的做法),但我想知道如何修復錯誤我' m得到,這是No route matches {:controller=>"profiles", :action=>"show"}Rails 3路由錯誤 - 「沒有路由匹配」

我得到的錯誤工作通過使用嵌套模型表單的Rails 3註冊過程。在註冊過程如下:

user = User.new 
user.email = "" 
user.password = "" 
user.profile = Profile.new 
user.profile.save 
user.save 

的註冊過程開始於具有以下形式的主頁:

<%= form_for :user, :url => signup_path, :html => {:id => 'homepage'} do |f| %> 
    <div> 
    ... 
    </div> 
    <%= f.fields_for :profile do |f| %> 
    <% end %> 
<% end %> 

然後流程轉向填寫的個人資料,然後重定向到在此表格完成後新用戶的個人資料:

<%= form_for :profile, :html => { :multipart => true } do |f| %> 
    <div> 
    ... 
    </div> 
    <%= f.fields_for :user do |f| %> 
    <% end %> 
<% end %> 

我在其各自的模型中有accepts_nested_attributes_for :user and :profile

我的Rails服務器時,它給了我更多的細節:

ActionController::RoutingError (No route matches {:controller=>"profile.save",  :action=>"show"}): 
    app/controllers/profiles_controller.rb:15:in `create' 

所以在我ProfilesController在「創造」:

def create 
    @profile = Profile.new(params[:profile]) 
    if @profile.save 
    redirect_to profile_path, :notice => 'User successfully added.' 
    else 
    render :action => 'new' 
    end 
end 

似乎很清楚,這個問題是profile_path,所以我的路線.rb:

post "/signup" => "profiles#create", :as => "signup" 
match "skip/signup", :to => "info#signupskip" 
match "skip/profiles/new", :to => "profiles#newskip" 
root :to => "users#create" 

任何人都可以幫助闡明我在做什麼錯誤/缺少在我的Routes.rb文件?

回答

1

重定向路徑應包含特定的配置文件重定向到:

if @profile.save 
    redirect_to profile_path(@profile), :notice => 'User successfully added.' 
else 
..... 

而且路線應該包括下面這行:

get "/profiles/:id" => "profiles#show", as => "profile" 
+0

有「得」,但忘了加上特定的配置文件。謝謝! – tvalent2

相關問題