I’m working on a Rails app using version 2.3.4. I’ve got a big
form somewhere that uses nested attributes, but I can’t seem to
access the constants from the other class.
Here’s basically what I’m doing:
class User < ActiveRecord::Base
has_one :pref
end
class Pref < ActiveRecord::Base
FOO = 1
end
And in app/views/user.html.erb:
<% form_for( :user, :url => { :action => go_to, :id => id }, :html =>
{ :multipart => true, :id => “user_form” } ) do |f| %>
<%- fields_for :email_pref do |p| -%>
<%= p.radio_button :bar, Pref::FOO %>
<%= p.label :bar, “Bar”, :value => Pref::FOO %>
…
<%- end -%>
…
<%- end -%>
Of course there’s quite a bit more code than that, but this is where
it goes
wrong. My error is:
/app/models/pref.rb:59: void value expression
Below it the code of the view, pointing out an error in the first line
that uses Pref::FOO
I checked if it really is Pref::FOO that’s the problem by adding <%=
Pref::FOO %> before
the radiobutton. Also, User::FOO (and declaring the constant in the
User class) works
perfectly fine. So it looks like I can’t access a Pref constant from a
User view, but that
sounds unreasonably limiting to me. I also tried ::Pref::FOO, which
also doesn’t work.
I really do want this constant in the Pref class. Putting it in User
is not a good
solution for me.
Any idea why this is a problem and how to solve it?
And what does this mysterious “void value expression” mean? Googling
it yields very few
results (and most of them are the same).
mcv.