Question

J'ai lu la documentation à ce sujet, et je ne sais toujours pas comment procéder.

J'ai une colonne dans le tableau pour: gratuit c'est un booléen

true  = free
false = paid
nil   = both

J'essaie de capturer cette même logique sous ma forme et je fais un travail absolument terrible ... jusqu'à présent, tout apparaît gratuitement

index.html.erb:

 <div class="field">
    <label class="radio">
      <%= radio_button_tag(:free, "free", :checked => true) %>
      Free
    </label>
    <label class="radio">
      <%= radio_button_tag(:free, "paid") %>
      Paid
    </label>
    <label class="radio">
      <%= radio_button_tag(:free, "both") %>
      Both
    </label>
  </div>

Resources_Controller.rb (je sais que ce n'est pas idéal car il vérifie les paramètres à chaque fois (même s'ils entrent dans de mauvaises informations) mais je ne sais pas comment vérifier d'autre si je peux l'enregistrer sans l'enregistrer. Aussi ... je Je ne sais même pas si j'ai bien fait, mais je ne sais pas comment le vérifier non plus. Quand je le fais p params[:resources] Il ne l'imprime pas comme je l'aime. Y a-t-il un bon moyen de faire ce genre de chose dans les rails?

def create
    @resource = Resource.new(params[:resource])

    if params[:resource][:free] = "free"
      @resource[:free] = true
    elsif params[:resource][:free] = "both"
      @resource[:free] = nil
    else
      @resource[:free] = false
    end

    if @resource.save
      redirect_to root_url
    else
      render :action => :new
    end 
  end

Resources_helper.rb

  def output_free
    if @resource.free = true
      "Free"
    elsif @resource.free = false
      "Paid"
    else
      "Both"
    end
  end
Était-ce utile?

La solution

C'est une logique floue, vrai / false / null. Existe dans SQL, vous pourriez l'utiliser, mais c'est de la magie que vous ne voulez pas. Utilisez une énumération et trois états - beaucoup plus clairs.

Et utilise == comparer :-)

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top