これは私の関連部分です_form.html.erb
<%= form_for(@score) do |f| %>
<% if @score.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@score.errors.count, "error") %> prohibited this score from being saved:</h2>
<ul>
<% @score.errors.full_messages.each do |msg| %>
<li><%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :client_id %><br />
<%= f.select :client_id, @clients.collect { |c| [c.name, c.id] }, {:include_blank => 'None'} %>
</div>
<div class="field">
<%= f.label :firm_size %><br />
<%= f.text_field :firm_size %>
</div>
.
.
.
<div class="actions">
<%= f.submit %>
</div>
<% end %>
この部分は、を作成するためのジェネリックがScore
あり、を介してコントローラーを介して渡されるクライアントのコレクションがある場合に機能しますclients
。
問題は、client
レコードが1つしかない場合です。たとえば、次のようなURLの場合です。
myapp.com/client/6/scores/new/
client_id
paramsにが含まれているとすると、nilエラーが発生します。
undefined method `collect' for nil:NilClass
@client
これを1つのレコードで解決するにはどうすればよいですか?