表单行为发布嵌套资源

时间:2011-06-06 01:16:24

标签: ruby ruby-on-rails-3 forms post redirect

我正在使用Ruby on Rails 3,我希望在发布表单时更改其常规行为,以便从signup操作发布到create操作而不是{{1}行动。也就是说,我想在我的new控制器中使用signup操作而不是(常规)new操作,并触发User操作以保存我的模型数据包含嵌套资源。

在我的create文件中,我有:

/config/routes.rb

resources :users do collection do get 'signup' end resource :profile end 我有

/app/controllers/users_controller.rb

在我的class UsersController < ApplicationController def signup @signup_user = User.new(params[:user]) @signup_user.build_profile # NOTE: Nested resource ... end def create ... @signup_user.save respond_to do |format| format.html { render :action => :signup } # signup.html.erb end end end 文件中

/app/views/users/signup.html.erb

我的问题是,如果我提交上述表单,我将被重定向到用户控制器的<%= form_for @signup_user do |f| %> ... <% end %> 操作,而不是我期望的index操作。它会将表单仅发布到create操作。

如何解决问题?


我尝试使用以下

index

但我仍有问题:我被重定向到<%= form_for( :user, @signup_user, :url => { :controller => "users", :action => "create" }, :html => { :method => :post } do |f| %> 行动。

1 个答案:

答案 0 :(得分:0)

问题确实在routers.rb中。正确的代码是

resources :users do
  collection do
    get  'signup'
    post 'create'
  end

  resource :profile
end