Removing the '' on true and false made no difference.
I also tried the addition of params[:completed_cfdym], both with and
without the :completed_cfdym, and both give me a rails error.
On Monday, June 9, 2014 8:13:27 AM UTC-7, dasibre wrote:
>
> 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.
> 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 [email protected].
To post to this group, send email to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/rubyonrails-talk/e57871cb-dc79-48a2-8038-2c448be199cb%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.