ruby-on-rails – 将表单提交路由到不同的控制器
发布时间:2020-12-16 21:08:37 所属栏目:百科 来源:网络整理
导读:如何在表单提交中指定Controller和Action?我正在尝试使用“客户端”控制器来创建帐户和关联人员(“客户”). 以下是相关模型.一个人直接属于账户(我称之为“客户”)或账户中的位置和组织. class Account ActiveRecord::Base has_many :organizations has_man
如何在表单提交中指定Controller和Action?我正在尝试使用“客户端”控制器来创建帐户和关联人员(“客户”).
以下是相关模型.一个人直接属于账户(我称之为“客户”)或账户中的位置和组织. class Account < ActiveRecord::Base has_many :organizations has_many :persons,:as => :linkable accepts_nested_attributes_for :organizations end class Person < ActiveRecord::Base belongs_to :linkable,:polymorphic => true end 以下是创建“客户端”的表单,我试图与其余代码一起制作: <%= form_for @account,:url => { :controller => "clients_controller",:action => "create" } do |f| %> <%= f.fields_for :persons do |builder| %> <%= builder.label :first_name %><br /> <%= builder.text_field :first_name %><br /> <%= builder.label :last_name %><br /> <%= builder.text_field :last_name %><br /> <%= builder.label :email1 %><br /> <%= builder.text_field :email1 %><br /> <%= builder.label :home_phone %><br /> <%= builder.text_field :home_phone %><br /> <% end %> <%= f.submit "Add client" %> <% end %> class ClientsController < ApplicationController def new @account = Account.new @person = @account.persons.build end def create @account = Account.new(params[:account]) if @account.save flash[:success] = "Client added successfully" render 'new' else render 'new' end end end 以下是我的路线: ShopManager::Application.routes.draw do resources :accounts resources :organizations resources :locations resources :people resources :addresses get 'clients/new' post 'clients' end 在尝试呈现表单时,我收到以下错误: ActionController::RoutingError in Clients#new Showing C:/Documents and Settings/Corey Quillen/My Documents/rails_projects/shop_manager/app/views/clients/new.html.erb where line #1 raised: No route matches {:controller=>"clients_controller",:action=>"create"} Extracted source (around line #1): 1: <%= form_for @account,:action => "create" } do |f| %> 2: 3: <%= f.fields_for :persons do |builder| %> 4: <%= builder.label :first_name %><br /> 解决方法
你必须在routes.rb中这样说
resources :clients 在表单中,将url指定为clients_path,方法为post: <%= form_for @account,:url => clients_path,:html => {:method => :post} do |f| %> --- <% end 有关rails如何处理REST URL的更多信息:http://microformats.org/wiki/rest/urls (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |