簡體   English   中英

Rails 3 - 嵌套資源通過 form_for 生成無效的 URL?

[英]Rails 3 - Nested Resources Generating in-valid URL via form_for?

我有以下 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

用戶 Model

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

簡介 Model

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

耙路線 output:

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

我有同樣的問題。 我的解決方案是,您必須像這樣直接聲明 url:

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

雖然我真的不知道為什么會發生這種情況 - 也許任何人都可以解釋......

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM