0

次の form_for タグがあります。プロファイルには生成中の URL が含まれていますが、有効ではありません。つまり、タグは次のとおりです。

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

これは、この「action="/users/1/profile.1」を予測していますが、これは action="/users/1/profile/1" である必要があります

ここで私が間違っていることを誰かが見ることができますか?

以下は、関連する rails ファイルのスナップショットです。

ルート.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

rake ルートの出力:

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
4

1 に答える 1

0

私も同じ問題を抱えていました。私の解決策は、次のようにURLを直接宣言する必要があるということでした。

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

なぜこのようなことが起こるのか私にはよくわかりませんが、おそらく誰でも説明できます...

于 2012-04-08T19:43:16.733 に答える