簡體   English   中英

表單行為發布嵌套資源

[英]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.

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