我是 Ruby On Rails 的新手,并按照 RoR 指南创建了一个博客: http: //guides.rubyonrails.org/getting_started.html
根据不同的文章,我应该避免资源嵌套超过一层。(http://guides.rubyonrails.org/routing.html#nested-resources 2.7.1)
他们参考了这篇关于最佳实践的文章:http ://weblog.jamisbuck.org/2007/2/5/nesting-resources
现在我的项目中没有嵌套资源,如何正确创建表单以正确设置引用?
我的 routes.rb 文件
Monitoring::Application.routes.draw do
resources :companies
resources :jobs
root :to => 'companies#index'
公司.rb
class Company < ActiveRecord::Base
attr_accessible :name
has_many :jobs, :dependent => :destroy
end
工作.rb
class Job < ActiveRecord::Base
belongs_to :company
attr_accessible :interval, :name
end
一份工作属于一家公司。
工作视图文件夹中的 _form.html.erb
<%= form_for @job, :html => { :class => 'form-horizontal' } do |f| %>
<div class="control-group">
<%= f.label :name, :class => 'control-label' %>
<div class="controls">
<%= f.text_field :name, :class => 'text_field' %>
</div>
</div>
<div class="control-group">
<%= f.label :interval, :class => 'control-label' %>
<div class="controls">
<%= f.number_field :interval, :class => 'number_field' %>
</div>
</div>
<div class="form-actions">
<%= f.submit nil, :class => 'btn btn-primary' %>
<%= link_to t('.cancel', :default => t("helpers.links.cancel")),
jobs_path, :class => 'btn' %>
</div>
<% end %>
为了实际创建工作并参考其公司,我尝试了以下代码
def new
@company = Company.find(params[:company])
@job = @company.jobs.build
respond_to do |format|
format.html # new.html.erb
end
end
是否有任何开源示例代码演示如何在没有嵌套对象的情况下创建新对象?
现在,创建新工作时没有正确设置公司参数,这意味着我无法从那里获取公司来创建工作。我如何创建一个正确引用其公司的新工作?