2014-01-12 5 views
6

Ich habe folgendes in meiner Anwendung:best_in_place gem Checkbox Problem mit Rails 4 (warum wird Zeichenfolge nicht boolean konvertiert?)

# 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 

Aber das boolean Modell Attribut aktualisiert nicht erhalten. Es wird auch kein Fehler ausgegeben. Irgendeine Idee, warum meine Anwendung die "true" oder "false" Zeichenkette auf einen boolean Wert nicht umwandelt.

Ich habe es getan like shown in the documentation. Aber es scheint, dass Rails 4 standardmäßig nicht so offen ist, um boolesche Werte von View/Controller zu empfangen, wie like exemplified in this SO post.

Der Server-Log sagt:

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 

Antwort

0

Sie können dies um Ihre aktuellen Ausgabe erhalten, indem Sie ...

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

Oder wenn der params Wert war '1', da die best_in_place docs sagt dann wäre es

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

auch dieses Juwel sieht aus wie esauch gut für diese funktionieren würde

Verwandte Themen