2014-01-12 3 views
6

私は自分のアプリケーションで次のいますbest_in_place宝石のチェックボックスの問題は、(なぜ文字列がブール値に変換されていない?)

# some_view_file.html.haml 
= best_in_place element, :inbox, :type => :checkbox 

# imap_accounts_controller.rb 
def update 
    element = ImapAccount.find(params[:id]) 
    element.update_attributes(params[:imap_account]) 
    respond_with element 
end 

しかし、ブールモデル属性は更新されません。エラーもスローされません。私のアプリケーションが"true"または"false"文字列をブール値に変換しない理由は何ですか。

私はそれをlike shown in the documentationとしました。しかし、Rails 4は一般的にデフォルトではビュー/コントローラからブール値を受け取るために開かれていないようです(like exemplified in this SO postなど)。

サーバログは言う:

Started PUT "/en/imap_accounts/525188ea83c336a4eb000002" for 127.0.0.1 at 2014-01-12 16:43:22 +0100 
Processing by ImapAccountsController#update as JSON 
    Parameters: {"imap_account"=>{"enable_ssl"=>"false"}, "authenticity_token"=>"mX+Dpghb8nB49qhFTLbGSB2w3pJQg56PBgg8jR7G3/Y=", "locale"=>"da", "id"=>"525188ea83c336a4eb000002"} 
    MOPED: 127.0.0.1:27017 QUERY  database=myapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('518f599683c336fb87000003')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.8680ms 
    MOPED: 127.0.0.1:27017 QUERY  database=myapp_development collection=imap_accounts selector={"_id"=>BSON::ObjectId('525188ea83c336a4eb000002')} flags=[] limit=0 skip=0 batch_size=nil fields=nil runtime: 0.4400ms 
    MOPED: 127.0.0.1:27017 QUERY  database=myapp_development collection=imap_accounts selector={"_id"=>BSON::ObjectId('525188ea83c336a4eb000002')} flags=[] limit=0 skip=0 batch_size=nil fields=nil runtime: 0.6020ms 
    MOPED: 127.0.0.1:27017 QUERY  database=myapp_development collection=users selector={"$query"=>{"_id"=>BSON::ObjectId('518f599683c336fb87000003')}, "$orderby"=>{:_id=>1}} flags=[] limit=-1 skip=0 batch_size=nil fields=nil runtime: 0.3010ms 
    MOPED: 127.0.0.1:27017 QUERY  database=myapp_development collection=imap_accounts selector={"_id"=>BSON::ObjectId('525188ea83c336a4eb000002')} flags=[] limit=0 skip=0 batch_size=nil fields=nil runtime: 0.5740ms 
Completed 204 No Content in 182ms 

答えて

0

あなたは

# imap_accounts_controller.rb 
def update 
    element = ImapAccount.find(params[:id]) 
    element.update_attributes(params[:imap_account] == "true") 
    respond_with element 
end 

またはbest_in_placeドキュメントが言うようにparams値が「1」だった場合...これを行うことにより、あなたの現在の問題を回避することができますそれは

# imap_accounts_controller.rb 
def update 
    element = ImapAccount.find(params[:id]) 
    element.update_attributes(params[:imap_account] == "1") 
    respond_with element 
end 

また、この宝石はこれもうまく動作するように見えるhttps://github.com/prodis/wannabe_bool

関連する問題