Rails 3 - 以另一个控制器的其他方法处理数据

时间:2012-03-09 17:40:11

标签: ruby-on-rails ruby-on-rails-3 data-processing

我的控制器名称为 AdminController ,其中我有方法 create_school_head

class AdminsController < ApplicationController
  ...
  def create_school_head
    @user = User.new
  end
  ...
end

我也查看 create_school_head

<%= form_for @user, :html => {:class => "form-horizontal"} do |f| %>
    <fieldset>
      <div class="control-group">
        <%= f.label :user_login, "Login", :class => "control-label" %>

        <div class="controls">
          <%= f.text_field :user_login %>
        </div>
      </div>

      <div class="control-group">
        <%= f.label :password, "Password", :class => "control-label" %>

        <div class="controls">
          <%= f.text_field :password %>
        </div>
      </div>

    </fieldset>

    <%= f.submit "Create", :class => "btn btn-success" %>
<%  end %>

的routes.rb

ElSchool::Application.routes.draw do
  resources :users,    :only => [ :new, :create, :show ]
  resources :sessions, :only => [ :new, :create, :destroy ]

  get "sessions/new"

  match 'pages/wrong_page', :to => 'pages#wrong_page'
  match '/signin',          :to => 'sessions#new'
  match '/signout',         :to => 'sessions#destroy'

  match '/admins/backups', :controller => 'admins',
                           :action     => 'backups'

  match '/admins/users_of_system', :controller => 'admins',
                                   :action     => 'users_of_system'

  match '/admins/create_school_head', :controller => 'admins',
                                      :action => 'create_school_head'

  match '/admins/create_teacher', :controller => 'admins',
                                  :action => 'create_teacher'

  root :to => 'sessions#new'                                                  #Home
end

现在它传递数据以创建用户控制器的方法。按钮在 AdminController 的其他方法中提交后,我希望从此表单发送数据,例如方法 process_school_head 。我怎么能这样做?

1 个答案:

答案 0 :(得分:1)

您可以在form_for方法中使用:url选项。例如,

<%= form_for @user, :url => process_school_head_url, :html => {:class => "form-horizontal"} do |f| %>

您也需要在路线中使用此功能。

match '/admins/process_school_head' => 'admins#process_school_head', :as => :process_school_head

希望它有所帮助。