3 votes

méthode indéfinie `collection_check_boxes'

J'essaie de créer une application de facturation. Le formulaire pour créer une facture devrait inclure une série de cases à cocher pour que l'utilisateur puisse choisir les leçons à facturer, mais j'obtiens cette erreur : undefined method 'collection_check_boxes' .

Voici les modèles concernés :

class Lesson < ActiveRecord::Base
  attr_accessible :lesson_time, :lesson_date, :invoice_id
  belongs_to :invoice
end

class Invoice < ActiveRecord::Base
  attr_accessible :amount, :due_date
  has_many :lessons
end

Et la vue :

<%= form_for(@invoice) do |f| %>
    <fieldset>     
        <%= f.label :lessons %>   
        <%= f.collection_check_boxes(:lessons, Lesson.all, :id, :lesson_date) %>         
    <%= f.submit %>
    </fieldset>
<% end %>

4voto

Ermin Dedovic Points 907

Collection_check_boxes n'est pas une méthode de form_builder. Soit mis :

<%= collection_check_boxes(:lessons, Lesson.all, :id, :lesson_date) %>

Cela générera du html qui ne sera pas associé à votre modèle (vous ne pourrez pas utiliser la fonction MyModel.new(params[my_model] ) et s'attendre à recevoir une réponse appropriée. Vous devrez appeler manuellement my_model.lessons = params[:lessons] ou vous pouvez passer un paramètre html name pour conformer le nom de votre case à cocher à la convention des rails).

Ou, si vous utilisez formtastic comme vous l'avez étiqueté, vous pouvez l'utiliser :

<%= f.input :lessons, :as => :check_boxes, :collection => Lesson.all %>

0voto

Dan Garland Points 1127

Je soupçonne que, puisque vous avez étiqueté votre post ruby-on-rails-3, vous essayez d'utiliser une méthode rails 4 dans un projet rails 3.

http://makandracards.com/makandra/32147-rails-4-introduced-collection_check_boxes

Vous devrez probablement utiliser le bon vieux check_box_tag au lieu de cela.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X