Forum: Ruby on Rails save 2 value in diffrent field in one field at database

Posted by Mas Bejo (masbejo)
on 2012-12-16 04:53
i want to get value from 2 diffrent field, first
from text_field, and second from select_date, and i want to save it in
one field "TTL" in database, this is the syntax,
i change my model file to be like this:

class Anggotum < ActiveRecord::Base
  set_table_name "anggota"
  attr_accessible :NP, :Nama, :Alamat, :TTL, :Telp, :Email, :Password,
:Waktu_Daftar, :Posisi, :Jenis_Kelamin
  attr_accessor           :tempat, :tanggal, :as=> :TTL
end

and in my form.html.rb that connect to new.html.rb i add this syntax

<div class="field">
    <%= f.label :ttl %></td><td>
    <%= f.label :":" %></td><td>
    <%= f.text_field :tempat %>
    <tr>
  <td colspan="3" align="right">
    <%= select_date :tanggal %></td></tr>
  </div>

but it make this error
{:as=>:TTL} is not a symbol

can you help me?
Posted by Jordon Bedwell (Guest)
on 2012-12-16 05:09
(Received via mailing list)
On Sat, Dec 15, 2012 at 9:53 PM, Mas Bejo <lists@ruby-forum.com> wrote:
> i want to get value from 2 diffrent field, first
> from text_field, and second from select_date, and i want to save it in
> one field "TTL" in database, this is the syntax,
> i change my model file to be like this:

See: http://api.rubyonrails.org/classes/ActiveRecord/Base.html (search
"serialize") ...If you want to be able to be able to select by that
field you'll need a custom serializer and PostgreSQL so you can use
Hstore (you can also use JSON datatype in PostgreSQL 9.2 but that
requires even more work because JSON is still a new feature so it
doesn't have the same select support that Hstore has.)
Posted by Mas Bejo (masbejo)
on 2012-12-16 06:11
so, did you mean. i must change my model file to be like this:

class Anggotum < ActiveRecord::Base
  set_table_name "anggota"
  attr_accessible :NP, :Nama, :Alamat, :TTL, :Telp, :Email, :Password, 
:Waktu_Daftar, :Posisi, :Jenis_Kelamin
  serialize :TTL
  #{':TTL'} << #{':tempat'] + #{':tanggal'}
end

it true?
Posted by Mas Bejo (masbejo)
on 2012-12-16 07:31
i edit my model file to be like this:

class Anggotum < ActiveRecord::Base
  set_table_name "anggota"
  attr_accessible :NP, :Nama, :Alamat, :TTL, :Telp, :Email, :Password, 
:Waktu_Daftar, :Posisi, :Jenis_Kelamin
  serialize :TTL
  string "tempat"
  date   "tanggal"
  #{':TTL'} << #{'tempat'] + #{'tanggal'}
end

and change the field in _form.html.rb file to be like this:
....
<div class="field">
    <%= f.label :ttl %></td><td>
    <%= f.label :":" %></td><td>
    <%= f.text_field 'tempat' %>
    <tr>
  <td colspan="3" align="right">
    <%= date_select 'tanggal', 'tanggal', {:start_year => 1950, :order 
=> [:month, :day, :year]} %>
  </div>
........

rails say this error

"NoMethodError in AnggotaController#index

undefined method `key?' for nil:NilClass"
Posted by Colin Law (Guest)
on 2012-12-16 09:22
(Received via mailing list)
On 16 December 2012 06:31, Mas Bejo <lists@ruby-forum.com> wrote:
> end
> => [:month, :day, :year]} %>
>   </div>
> ........
>
> rails say this error
>
> "NoMethodError in AnggotaController#index
>
> undefined method `key?' for nil:NilClass"

Have a good look at the Rails Guide on Debugging.  It will show you
how to debug your code.

Also I suggest that you work right through a good tutorial on Rails,
such as railstutorial.org, which is free to use online.  Then you will
get a better understanding of how Rails works.

Colin
Posted by Jim ruther Nill (jimboker)
on 2012-12-16 11:28
(Received via mailing list)
Sent from my iPhone

On 16/12/2012, at 11:53 AM, Mas Bejo <lists@ruby-forum.com> wrote:

> end
>  </div>
>
> but it make this error
> {:as=>:TTL} is not a symbol
>
> can you help me?

I told you to read on virtual attributes and callbacks.  To give you a 
clue on what you need to do, you need to create 2 virtual atteibutes: 
one for the text field and one for the date select. Then use a before 
validation callback to concatenate them. Or just as colin suggested, 
concatenate them in the controller but i'd like to so these things in 
the model.
Posted by Colin Law (Guest)
on 2012-12-16 12:00
(Received via mailing list)
On 16 December 2012 10:27, Jim Ruther Nill <jvnill@gmail.com> wrote:
>>  attr_accessible :NP, :Nama, :Alamat, :TTL, :Telp, :Email, :Password,
>>    <tr>
>>  <td colspan="3" align="right">
>>    <%= select_date :tanggal %></td></tr>
>>  </div>
>>
>> but it make this error
>> {:as=>:TTL} is not a symbol
>>
>> can you help me?
>
> I told you to read on virtual attributes and callbacks.  To give you a clue on 
what you need to do, you need to create 2 virtual atteibutes: one for the text 
field and one for the date select. Then use a before validation callback to 
concatenate them. Or just as colin suggested, concatenate them in the controller 
but i'd like to so these things in the model.

You are right of course Jim, I was just trying to make it easier for
the guy to understand, but yes, Mas Bejo it is better to put such code
in the model.

Colin
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.