【发布时间】:2011-06-06 01:16:23
【问题描述】:
我正在使用 Ruby on Rails 3,我想更改它在发布表单时的常规行为,以便从 signup 操作发布到 create 操作,而不是从 new 操作发布。也就是说,我想在我的User 控制器中使用signup 操作而不是(常规)new 操作并触发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| %>
但我仍然有问题:我被重定向到index 操作。
【问题讨论】:
标签: ruby ruby-on-rails-3 forms post redirect