Ruby on Rails
Monday, June 9, 2014
You should remove the quotes from your boolean values.
@completed_cfdym = 'true' should be @completed_cfdym = true this should solve the Completed cfdym is not a valid response error.
-- @completed_cfdym = 'true' should be @completed_cfdym = true this should solve the Completed cfdym is not a valid response error.
To preserve form values after failure you have to use params[:fieldname]
<%= f.select :completed_cfdym, params[:completed_dfdym],{'' => nil, 'Yes' => true, 'No' => false}, {}, { :class => 'span1' } %>
Then use render in your controller on form submit failure.
attr_accessor :
On Sunday, June 8, 2014 5:40:20 PM UTC-4, Asa Romberger wrote:
The second attr is a transient only used when the user signs up for an account, so I did not want to save it it in the database.
I now have in the model:
attr_accessor :completed_cfdym
def completed_cfdym
@completed_cfdym
end
def completed_cfdym=(var)
if var = 'true'
@completed_cfdym = 'true'
else
if var = 'false'
@completed_cfdym = 'false'
else
@completed_cfdym = ''
end
end
end
validates(:completed_cfdym, inclusion: { in: [true, false], message: "%{value} is not a valid response"} )
The '' is because I do want force the user to answer.
And the view:
<%= f.label :completed_cfdym, "Have you already completed 'A Conversation for the Difference You Make in Life?", class: 'span5' %>
<%= f.select :completed_cfdym, {'' => nil, 'Yes' => true, 'No' => false}, {}, { :class => 'span1' } %>
This still fails with:
Completed cfdym is not a valid response
It also does not preserve the value that I set when it displays the error and goes back to the '' => 'nil' setting
On Sunday, June 8, 2014 6:39:34 AM UTC-7, James Kwame wrote:What exactly are you trying to achieve with this approach, why do you need to have the second attr not in the database and validated?
To answer your question, yes you can force it to be a boolean, by creating your own accessor methods
Instead of attr_accessor :attrvalue
def attrvalue
@value
end
def attrvalue=(new_value)
if new_value == "true"
@value = true
else
@value = false
end
end
On Saturday, June 7, 2014 9:17:08 PM UTC-4, Asa Romberger wrote:I have a model with a boolean variable in the database and one added by attr_accessor:
In the model:
attr_accessor :attrvalue
validates(:dbvalue, inclusion: { in: [true, false], message: "%{value} is not a valid response"} )
validates(:attrvalue, inclusion: { in: [true, false], message: "%{value} is not a valid response"} )
In the view:
<%= form_for(@user) do |f| %>
<%= f.select :dbvalue, {'' => nil, 'Yes' => true, 'No' => false}, {}, { :class => 'span1' } %>
<%= f.select :attrvalue, {'' => nil, 'Yes' => true, 'No' => false}, {}, { :class => 'span1' } %>
<% end %>
The dbvalue works, the attrvalue does not work and always throws the message attrvalue is not a valid response.
I assume that attrvalue is not a boolean. Can I force it to be a boolean? Alternately, is there another way to handle it?
You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rubyonrails-talk+unsubscribe@googlegroups.com.
To post to this group, send email to rubyonrails-talk@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rubyonrails-talk/3aca2f00-e13b-4f83-882d-f34083f9250d%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment