[英]Form behavior posting nested resource
我在 Rails 3 上使用 Ruby 並且我想更改其在發布表單時的常規行為,以便從signup
操作發布到create
操作,而不是new
操作發布。 也就是說,我想在我的User
controller 中使用signup
操作而不是(常規) new
操作,並觸發create
操作來保存包含嵌套資源的 model 數據。
在我的/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 %>
我的問題是,如果我提交上述表單,我將被重定向到用戶 controller 的index
操作,而不是我期望的create
操作。 它接縫表單僅發布到index
操作。
我該如何解決這個問題?
我嘗試使用以下
<%= form_for( :user, @signup_user, :url => { :controller => "users", :action => "create" }, :html => { :method => :post } do |f| %>
但我仍然有問題:我被重定向到index
操作。
問題確實存在於routers.rb
中。 正確的代碼是
resources :users do
collection do
get 'signup'
post 'create'
end
resource :profile
end
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.