Railsのボタンまたはリンクを使用してオブジェクトのフィールドを固定値に設定するにはどうすればよいですか? これはかなり基本的な手順のようですが、うまくいきませんでした。例は、製品モデルのparent_idをnilに設定することです(関連する以前の質問Update field through link_to in Rails)。テキストフィールドを空のままにすることで、フォームを介してこれを実現できました。
<%= form_for @product do |f| %>
<%= f.label :parent_id %>
<%= f.text_field :parent_id %>
<%= f.submit "Update", class: "btn" %>
<% end %>
しかし、ボタンが押されたときにparent_idがnilに設定されるように、テキストフィールドなしで単にボタンを使用してこれを行うにはどうすればよいでしょうか? 非表示フィールドにparent_idを設定しようとしましたが、うまくいきません。
<%= form_for @product do |f| %>
<%= f.hidden_field parent_id: nil %>
<%= f.submit "Remove", class: "btn" %>
<% end %>
編集/更新アクションのコントローラーは次のようになります。
products_controller.rb
def edit
@product = Product.find_by_id(params[:id])
end
def update
if @product.update_attributes(params[:product])
flash[:success] = "Product updated"
redirect_to @product
else
render 'edit'
end
end
編集
フォームの代わりに link_to を使用してこれを行う方法については、Rails で link_to を介してフィールドを更新するを参照してください。