WorkShiftをbooked:trueおよびbooked_by:current_member.member_idに変更するメソッドを記述したいと思います。しかし、私はエラービューから別のインスタンスのparamsでインスタンスを更新する方法
"#<ワークシフトのための未定義のメソッド`ブック」:0xc973ce0>" 取得
を、私は理由を理解していません。私はそれをボタンとし、別の編集ビューではないようにしたい。
編集:は私が間違った場所に本方法を置く判明したが、work_shifts.rbで同じ方法が「真のための未定義のメソッド `to_model」:TrueClass」スロー代わりに。私は(明らかに)ビューから別のオブジェクトのパラメータで1つのオブジェクトを更新するカスタムメソッドを呼び出す正しい方法は不明です。
マイindexビュー:
<% @work_shifts.each do |work_shift| %>
<tr>
<td><%= work_shift.date %></td>
<td><%= work_shift.booked_by %></td>
<td><%= work_shift.booked %></td>
<td><%= work_shift.start_time.strftime("%H:%M") %></td>
<td><%= work_shift.stop_time.strftime("%H:%M") %></td>
<td><%= button_to 'Book', work_shift.book(current_member) %></td>
<% if current_member.admin? %>
<td><%= link_to 'Edit', edit_work_shift_path(work_shift) %></td>
<td><%= button_to "Ta bort", work_shift, :method=>:delete, :work_shift=>:destroy %></td>
<% end %>
</tr>
<% end %>
WorkShift.rb:
def book(member_id)
self.update(booked:true, booked_by: member_id)
end
routes.rbを
resources :work_shifts do
member do
get 'book'
end
end
私はレールに新たなんだと、外出先での学習を、およびIソリューションを推測するのは簡単ではありませんが、私がやりたいことに役立つ質問やドキュメントは見つかりません。
コントローラにメソッドを定義しましたが、モデルインスタンスでメソッドを呼び出そうとしています。 –
ありがとうございました!私はその方法をどこに置くべきか分からなかった。しかし、私がモデルにメソッドを置くと、私は "trueのための未定義のメソッド' to_model 'を得る:TrueClass "。その問題を引き起こす原因についてのヒントは? – SKR
ゼロコンテキストではありません。 –