新手对Rails的疑虑

时间:2014-09-06 10:51:51

标签: ruby-on-rails rails-activerecord

因此,我的计划有2个模型,CarsPayments,其中付款为belong_to汽车并且是一对多关系。

我想通过付款方式创建一个计算帐户的功能。价值并在特定时期内。用户将提供2个输入start_dateend_date,然后程序将使用所述期间内的付款计算总利润和费用。

我的问题是,对于帐户部分,我应该创建一个帐户控制器,还是在现有payment_controller中创建新路由来计算帐户部分。如果创建帐户控制器,如何从帐户控制器访问付款模型?

请参阅我的项目的此链接。

https://dl.dropboxusercontent.com/u/10960981/VKVINAUTO.rar

或者你可以建议一个更好的方法让我继续。

1 个答案:

答案 0 :(得分:2)

<强> GIT

首先,您需要考虑使用git或其他Software Configuration Management系统 - 这将使您能够正确管理代码的各种元素。各自的版本。

具体而言,您不应该使用您的代码发布RAR文件。您将更适合使用GitHubBitBucket之类的内容来存储&amp;分享您需要帮助的相关代码片段。

您最适合使用this Railscast查找git

enter image description here


<强>修正

要回答有关修复的问题,请注意以下事项:

#config/routes.rb
root: "payments#index"
resources :cars do
  resources :payments
end

#app/models/car.rb
class Car < ActiveRecord::Base
   has_many :payments do
       def dates begin, end
           where("created_at >= begin AND created_at <= end")
       end
   end
end

#app/models/payment.rb
class Payment < ActiveRecord::Base
   belongs_to :car
end

#app/controllers/cars_controller.rb
class PaymentsController < ApplicationController
   def index
      @car = Car.find params[:car_id]
      @payments = @car.payments
      if params[:begin].present? && params[:end].present?
          @payments = @car.payments.dates(params[:begin], params[:end])
      end
   end
end

这将使您能够使用以下内容:

#app/views/payments/index.html.erb
<%= form_tag car_payments_index(@car), method: :get do %>
    <%= text_field_tag :begin %>
    <%= text_field_tag :end %>
    <%= submit_tag "Go">
<% end %>

这将基本上“刷新”付款索引页面,根据需要确定日期。


<强>模型

如果您想从Payment访问accounts_controller模型,您只需通过调用它来引用它:

#app/controllers/accounts_controller.rb
class AccountsController < ApplicationController
   def index
      @payments = Payment.all
   end
end

您需要阅读MVC programming pattern,其中构建了Rails。这将显示ModelsviewsController之间的关系 - 具体来说,它们是可互换的/独占的