コンテキストは、ユーザーが配送先住所から選択できるチェックアウト プロセスです。したがって、コントローラーのアクションは次のように述べています。
@shipping_addresses = ShippingAddress.where(['user_id = ?', current_user.id])
ユーザーがチェックアウト プロセスを繰り返したときに優先アドレスが表示されるように、preferred にブール値を設定する方が魅力的です。しかし問題は、この優先属性を変更することにあります。
要するに、フォームで優先をtrueに設定するラジオボタンを作成する必要があり(他のものを選択解除する必要がありますか?)、フォームはレコードを更新する必要があります
def update_preferred
respond_to do |format|
if @shipping_addresses.save
@shipping_addresses = ShippingAddress.where(['user_id = ?', current_user.id]).update_all("preferred = 'false'")
-- selected_shipping_address.update("preferred = 'true'")
end
..フォームを宣言するための構文にも苦労しています(私は標準的なレールの慣習から離れたことは一度もありません...):
<%= form_for(@shipping_addresses) do |f| %>