ROR радио кнопки для чайников? - PullRequest
0 голосов
/ 28 февраля 2012

Я прочитал документацию по этому вопросу, и до сих пор не знаю, как это сделать.

У меня есть столбец в таблице для: бесплатно, что является логическим

true  = free
false = paid
nil   = both

Я пытаюсь запечатлеть ту же логику в своей форме, и я делаю совершенно ужасную работу ... пока все получается бесплатно

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 (я знаю, что это не идеально, потому что он проверяет параметры каждый раз (даже если они вводят неверную информацию), но я не уверен, как еще проверить, могу ли я сохранить его, не сохраняя его... Я даже не знаю, правильно ли я сделал params, но я тоже не уверен, как это проверить. Когда я делаю p params[:resources], он не печатает его так, как ему нравится. Есть хороший способ сделать это врельсы?

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

1 Ответ

2 голосов
/ 28 февраля 2012

Это нечеткая логика, правда / ложь / ноль. Существует в SQL, вы могли бы это использовать, но это волшебство, которое вам не нужно. Используйте Enum и три состояния - более понятный.

И используйте == для сравнения: -)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...