Радиокнопка Haml Предварительно выбрать синтаксис - PullRequest
2 голосов
/ 19 января 2011

Мы используем Ruby (1.9.2) Rails (2.3).

Я пытаюсь установить предварительный выбор для переключателей ...

- form_for @user, :url => plan_user_url, :html => { :method => 'put', :class => 'form' }  do |f|
  - @plans.each do |p|
    %span
      %p= p[:blurb]
      %p= p[:price]
      - p[:features].each do |f|
        %p= f
      = f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}
      = f.label :plan_name, p[:name]
    %p
      %br
  .spacer

  .field.first
    = f.submit 'Update', :class => 'button ok'
  .field
    = link_to 'Cancel', redirect_back_url || root_url, :class => 'button cancel'

HAML не нравится эта строка:

  = f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}

Любая помощь приветствуется.

Ответы [ 2 ]

11 голосов
/ 19 января 2011

Неверный код Ruby:

= f.radio_button {:id => p[:id], :checked => @user[:plan_id]==p[:id] || nil}

Вы пытаетесь вызвать метод radio_button, и Руби думает, что вы передаете ему блок, но на самом деле вы передаете его Hash. Это лучше:

= f.radio_button :id => p[:id], :checked => @user[:plan_id]==p[:id] || nil

Это устраняет неоднозначность между Proc и Hash, но все же странно. Почему вы хотите || nil? Я думаю, что это не нужно:

= f.radio_button :id => p[:id], :checked => @user[:plan_id] == p[:id]
0 голосов
/ 28 января 2011

Спасибо за подсказки от Брайана. Получается

f.radio_button :plan_id, p[:id]

работает для предварительного выбора.

...