Ruby on rails 向Rails 4应用程序中添加新页面

Ruby on rails 向Rails 4应用程序中添加新页面,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-4,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 4,我有一个新的Rails项目,在这个项目中我有一个名为Customer的控制器、视图和模型。现在,我需要的是,在CRUD操作旁边,我需要添加两个新页面,如: 1. http://0.0.0.0:3000/Customer/sale 2. http://0.0.0.0:3000/Customer/lease 我想在这些文件中插入代码。 如何实现这一点我的意思是创建新的销售和租赁链接?在您的routes.rb文件中,您可以添加这两条路线: resources :customers do

我有一个新的Rails项目,在这个项目中我有一个名为
Customer
的控制器、视图和模型。现在,我需要的是,在
CRUD
操作旁边,我需要添加两个新页面,如:

1. http://0.0.0.0:3000/Customer/sale

2. http://0.0.0.0:3000/Customer/lease
我想在这些文件中插入代码。
如何实现这一点我的意思是创建新的
销售
租赁
链接?

在您的
routes.rb
文件中,您可以添加这两条路线:

  resources :customers do
    collection do
      get 'create_sale' => 'customers#create_sale', as: :create_sale
      get 'create_lease' => 'customers#create_lease', as: :create_lease
    end
  end
然后,您可以在
customers\u controller.rb
文件中添加两个新方法(操作):

  def create_sale
    # your logic goes here
  end

  def create_lease
    # your logic goes here
  end

还可以在
app/views/customers/
目录中为他们创建两个视图,分别为
create\u sale.html.erb
create\u lease.html.erb
,您可以在其中放置与视图相关的代码。

我认为最好使用该资源

只是一个例子,因为我不知道你是如何在销售和租赁客户之间做出决定的

路线:

resources :customers
并为
索引路径
提供一个参数,以获取所有
销售
租赁客户
的信息

客户控制器

def index
  customer_type = params[:customer_type] || ['sale','lease']
  @customers = Customer.where(customer_type: customer_type)
end
并在视图中使用它

customers_path(customer_type: 'sale')
这将使您能够调用以下控制器操作:

#app/controllers/customers_controller.rb
class CustomersController < ApplicationController
    def sale
    end

    def lease
    end
end
如果您觉得非常有冒险精神,您可以使用为
Sale
Lease
创建同一类类型的不同实例:

#app/models/sale.rb
class Sale < Purchase
end

#app/models/lease.rb
class Lease < Purchase
end
#app/models/sale.rb
类别买卖
结束
#app/models/lease.rb
类别租赁<购买
结束

如果您愿意,我可以对此进行更多解释。

@K M Rakibul Islam:谢谢您,Rakib:)您的建议对我有效,我的应用程序中的代码略有更改,谢谢您的帮助。谢谢您,Rob,我将上述@K M Rakibul Islam的建议方法与您建议的“使用资源”混合使用方法,我的问题得到了解决。非常感谢Rich,你帮助我找到了一种新的更简洁的方法来解决我的问题:)
#config/routes.rb
resources :customers do
    resources :leases, controller: :purchases, {type: :lease}
    resources :sales, controller: :purchases, {type: :sale}
end

#app/controllers/purchases_controller.rb
class PurchasesController < ApplicationController
   def new
      @customer = Customer.find params[:customer_id]
      @purchase = @customer.purchases.new(type: params[:type])
   end
   def create
      @customer = Customer.find params[:customer_id]
      @purchase = @customer.purchases.new purchase_params
   end

   private

   def purchase_params
      params.require(:purchase).permit(:type, :customer_id :etc, :etc)
   end
end

#app/models/purchase.rb
class Purchase < ActiveRecord::Base
   belongs_to :customer
end

#app/models/customer.rb
class Customer < ActiveRecord::Base
   has_many :purchases
end
#app/models/sale.rb
class Sale < Purchase
end

#app/models/lease.rb
class Lease < Purchase
end