1

オブジェクトの表示ビューに次のようなリンクがあります。

<%= link_to "Approve", object_path(@object, status: true), method: :put, confirm: "Are you sure?", class: 'button' %>

コントローラーの更新アクションは標準であり、オブジェクトの通常の編集フォームは問題なく機能します。しかし、何らかの理由で、このリンクはブール値フィールドを true に更新していません...

このリンクで何か間違ったことはありますか?

編集: コントローラーの更新セクション

def update
  @object = Object.find_by_certain_field(params[:id])
  if @object.update_attributes(params[:object])
    flash[:success] = "Object Updated"
    redirect_to @object
  else
    render 'edit'
  end
end
4

1 に答える 1

2

object_path(@object, status: true)params[:status]は真であり、希望どおりではないためparams[:object][:status]、オブジェクトを更新しません@object.update_attributes(params[:object])

現在のコードパターンを使い続けたい場合は、追加するだけです

parmas[:object] ||= {} 
params[:object][:status] = params[:status] if params[:status]

if @object.update_attributes(params[:object])

そして、すべてがうまくいくはずです。

それ以外の場合は、この更新呼び出しのフォームを作成することをお勧めします。

<% form_for @object, :method => :put do |f| %>
  <%= f.hidden_field :status, :value => true %>
  <%= f.submit "Approve" %>
<% end %>
于 2012-07-23T12:56:20.270 に答える