2012-04-08 70 views
0

我有以下的form_for標記,該配置文件與它生成的URL,它是無效的,即這裏是標籤:Rails 3 - 嵌套資源通過form_for生成無效URL?

<%= form_for([current_user,@profile], :html =>{:class => "contact_form",:multipart => true}) do |f| %> 

這是預測該「行動=」 /用戶/ 1/profile.1" 這應該是行動=‘/用戶/ 1 /型材/ 1’

有人能看到我在做什麼錯在這裏嗎?

下面是相關的軌文件的一些快照。

routes.rb

devise_for :users 
resources :users, :only => [:delete] do 
    resource :profile 
end 

用戶模型

class User < ActiveRecord::Base 
    has_one :profile, :inverse_of => :user 
    accepts_nested_attributes_for :profile 

資料模型

class Profile < ActiveRecord::Base 
    belongs_to :user 
    validates_presence_of :user 

耙路線輸出:

new_user_session GET /users/sign_in(.:format)    devise/sessions#new 
      user_session POST /users/sign_in(.:format)    devise/sessions#create 
    destroy_user_session DELETE /users/sign_out(.:format)    devise/sessions#destroy 
      user_password POST /users/password(.:format)    devise/passwords#create 
     new_user_password GET /users/password/new(.:format)   devise/passwords#new 
     edit_user_password GET /users/password/edit(.:format)   devise/passwords#edit 
         PUT /users/password(.:format)    devise/passwords#update 
cancel_user_registration GET /users/cancel(.:format)    devise/registrations#cancel 
     user_registration POST /users(.:format)      devise/registrations#create 
    new_user_registration GET /users/sign_up(.:format)    devise/registrations#new 
    edit_user_registration GET /users/edit(.:format)     devise/registrations#edit 
         PUT /users(.:format)      devise/registrations#update 
         DELETE /users(.:format)      devise/registrations#destroy 
      user_profile POST /users/:user_id/profile(.:format)  profiles#create 
     new_user_profile GET /users/:user_id/profile/new(.:format) profiles#new 
     edit_user_profile GET /users/:user_id/profile/edit(.:format) profiles#edit 
         GET /users/:user_id/profile(.:format)  profiles#show 
         PUT /users/:user_id/profile(.:format)  profiles#update 
         DELETE /users/:user_id/profile(.:format)  profiles#destroy 

回答

0

我有同樣的問題。我的解決辦法是,你必須直接申報網址是這樣的:

<%= form_for([current_user,@profile], :url => user_profile_path, :html =>{:class => "contact_form",:multipart => true}) do |f| %> 

雖然我真的不知道爲什麼這件事情發生 - 也許任何人都可以解釋...