2012-07-23 4 views
1

J'ai un lien qui ressemble à ceci dans la vue du spectacle de l'objet:Bouton Rails pour mettre à jour Attribut ne fonctionne pas

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

L'action de mise à jour dans le contrôleur est standard et sous forme d'édition régulière de l'objet fonctionne très bien. Mais pour une raison quelconque, ce lien ne met pas à jour le champ booléen à vrai ...

Y at-il quelque chose que j'ai mal fait avec ce lien?

EDIT: Mise à jour Section du contrôleur

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 
+0

Affichage du code du contrôleur pourrait aider. Mais sans cela, je risque de deviner que vous définissez spécifiquement le champ booléen à true dans l'action de mise à jour? –

+0

J'ai ajouté le code du contrôleur à la question. J'utilise simplement 'update_attributes' pour définir les choses qui sont postées. Des idées? – Justin

Répondre

2

object_path(@object, status: true) provoque params[:status] pour être vrai et non params[:object][:status] que vous le souhaitez, donc pas de mettre à jour l'objet avec @object.update_attributes(params[:object])

Si vous souhaitez continuer à utiliser le code actuel motif juste ajouter

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

avant

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

et tout devrait bien se passer.

Sinon, je vous Avisé de faire un formulaire pour cet appel de mise à jour:

<% form_for @object, :method => :put do |f| %> 
    <%= f.hidden_field :status, :value => true %> 
    <%= f.submit "Approve" %> 
<% end %> 
+0

J'ai essayé de mettre cela et cela ne fonctionnait toujours pas: '<% = form_for @object, méthode:: put do | f | %><% = f.hidden_field: status, valeur: true%><% = f.submit "Approuve"%><% end %> ' – Justin

+0

Et dans la source, il a' ' aussi bien que

' – Justin

+0

Pouvez-vous s'il vous plaît coller ici le journal du serveur rails qui reçoit cette demande? Aussi s'il vous plaît ajouter! sur la méthode update_attributes comme dans: 'if @ object.update_attributes! (params [: object])'. De cette façon, si l'objet n'est pas enregistré en raison d'une validation, une erreur sera déclenchée et elle sera enregistrée. –

Questions connexes