在轨道中构建单选按钮时避免使用eval

时间:2015-05-05 22:07:20

标签: ruby-on-rails ruby

在这里,我正在构建数据库驱动的单选按钮。我想知道是否有一种方法可以避免eval并且看到检查是否真实!谢谢,

索引控制器

 columns = Model.column_names  

以haml查看

- columns.each do |cols|
      - check = "c[0].#{cols}==1? true : false" // checking value here
      - negcheck = "c[0].#{cols}==0? true : false"// checking value here    
      - pluckid = "c[0].id"
      - id = eval(pluckid)
      %tbody
         %td #{cols}
         %td
          = label_tag 'On'
          = radio_button_tag("ABC",1,checked = eval(check), options = {})
          = label_tag 'Off'
          = radio_button_tag("xyz",0,checked = eval(negcheck), options = {})

2 个答案:

答案 0 :(得分:0)

您可以使用[]方法访问该值。

- columns.each do |cols|
      - check = c[0][cols] == 1
      - negcheck = c[0][cols] == 0
      - id = c[0].id
      %tbody
         %td #{cols}
         %td
          = label_tag 'On'
          = radio_button_tag("ABC", 1, checked = check, options = {})
          = label_tag 'Off'
          = radio_button_tag("xyz", 0, checked = negcheck, options = {})

答案 1 :(得分:0)

eval("c[0].#{cols}==1? true : false")

可以写成

c[0].send(cols) == 1