私は 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'
company.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
ジョブは 1 つの会社に属します。
ジョブ ビュー フォルダー内の _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
ネストされたオブジェクトを使用せずに新しいオブジェクトを作成する方法を示すオープン ソースのサンプル コードはありますか?
現在、新しいジョブを作成するときに会社のパラメーターが正しく設定されていないため、そこから会社を取得してジョブを作成することはできません。会社への正しい参照を使用して新しいジョブを作成するにはどうすればよいですか?