Rails: ошибка компиляции с именем атрибута, которое начинается с целого числа - PullRequest
0 голосов
/ 13 января 2012

У меня возникают ошибки компиляции. Не могли бы вы, ребята, помочь мне разобраться с этим. Это на мой взгляд (третья строка с 5prime_primer в частности):

 <tr>
      <td><%=relation.AmpInfoName%></td>
      <td><%=relation.5prime_primer%></td>
      <td><%=relation.3prime_primer%></td>
      <td><%=relation.Selective_bases_1%></td>
      <td><%=relation.Selective_bases_2%></td>
 </tr>

выдает эту ошибку:

compile error
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:314: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.5prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:314: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.5prime_primer);@output_buffer.s...
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:315: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.3prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:315: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.3prime_primer);@output_buffer.s...
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:338: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.5prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:338: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.5prime_primer);@output_buffer.s...
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:339: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.3prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:339: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.3prime_primer);@output_buffer.s...
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:354: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.5prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:354: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.5prime_primer);@output_buffer.s...
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:355: no .<digit> floating literal anymore; put 0 before dot
...tput_buffer.append= (relation.3prime_primer);@output_buffer....
                              ^
/usr/home/benjamin/locus/app/views/locus_table/show.html.erb:355: syntax error, unexpected tINTEGER
...put_buffer.append= (relation.3prime_primer);@output_buffer.s...

Не могли бы вы, ребята, помочь мне разобраться, как обойти это?

Ответы [ 2 ]

2 голосов
/ 13 января 2012

Имена методов Ruby не могут начинаться с цифр. Однако вы можете определить свои собственные методы доступа:

class Foo < ActiveRecord::Base
  def three_prime_primer
    read_attribute '3_prime_primer'
  end

  def three_prime_primer=(value)
    write_attribute '3_prime_primer', value
  end
end

Нетрудно обернуть это небольшим методом, чтобы вы могли сделать

access_attribute '3_prime_primer', :as => 'three_prime_primer'
0 голосов
/ 13 января 2012

Я определил метод в своей модели, а затем посмотрел атрибут с помощью хэш-карты:

class AmplificationInfoTable < ActiveRecord::Base
        attr_accessor :all
        def fiveprime_primer
                attributes["5prime_primer"]
        end
end

Это позволило мне сделать такие вещи, как:

relation.fiveprime_primer

Peace!

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