Я использую Ruby on Rails 3, и я хотел бы изменить его обычное поведение при публикации формы, чтобы публиковать вместо действия signup
действие create
вместо действия 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| %>
но у меня все еще есть проблема: я перенаправлен на действие index
.