Hi all,
I’ve a entry model and I’ve a entry_type model. How do I to add a select to my view to edit the entry type and focus the current type.
Regards,
Hi all,
I’ve a entry model and I’ve a entry_type model. How do I to add a select to my view to edit the entry type and focus the current type.
Regards,
I tried to do it by myself,
I’ve a model named Entry with a field named type_id (added via migration) and a model named EntryType with a field named description.
class Entry < ActiveRecord::Base belongs_to :entry_type … end
class EntryType < ActiveRecord::Base has_many :entries end
I added the following code line to my /_form.erb:
<%= f.select(‘entry’, ‘type_id’, EntryType.all.collect {|t| [t.description, t.id]}, {:include_blanks => ‘None’}) %>
but when I try to load the page I get this exception:
Showing I:/Labs/RailsProjects/sisingresos/app/views/entries/_form.html.erb where line #18 raised:
undefined method `merge' for [["Ordinario", 1], ["Especial", 2], ["Concejo Comunal", 3]]:Array
Extracted source (around line #18):
15: </div>
16: <div class="field">
17: <%= f.label t('entries.fields.type') %><br />
18: <%= f.select('entry', 'type_id', EntryType.all.collect {|t| [t.description, [t.id](http://t.id)]}, {:include_blanks => 'None'}) %>
19: </div>
20: <div class="field">
21: <%= f.label t('entries.fields.generalentrydate') %><br />
Trace of template inclusion: app/views/entries/new.html.erb
Rails.root: I:/Labs/RailsProjects/sisingresos
Application Trace | Framework Trace | Full Trace
app/views/entries/_form.html.erb:18:in `block in _app_views_entries__form_html_erb__326164559_25362852_503356076'
app/views/entries/_form.html.erb:1:in `_app_views_entries__form_html_erb__326164559_25362852_503356076'
app/views/entries/new.html.erb:3:in `_app_views_entries_new_html_erb___750658673_25375572__1012098428'
app/controllers/entries_controller.rb:23:in `new'
Regards,
I don’t know if this is the problem, but RAILS_ENV has been deprecated in favor of Rails.env
Hey there Amador,
I must confess, I am not a rails guru here but, according to the documentation I have, the part that reads
<%= f.select(‘entry’, ‘type_id’, EntryType.all.collect {|t| [t.description, t.id]}, {:include_blanks => ‘None’}) %> should end with a { :include_blanks => false } not with a ‘None’ string value.
The other thing here is, if an annotation of your models look something like this:
Table name: entities
id :integer not null, primary key
type_id :integer
. . .
created_at :datetime
updated_at :datetime
Table name: entity_types
id :integer not null, primary key
type :string(255)
.
.
.
created_at :datetime
updated_at :datetime
Then in my understanding rails make the relationship between the two models if you have a field name containing the name of the table you want link to followed by an underscore and the name of the primary key of the referred table: i.e. enty model needs an entity_type_id field not type_id.
Well I guess that all I can see from what you have provided but like I said I am not an expert and I stand to be corrected. Hope this helps
Regards, Tsega
Solved,
I do this:
<%= select(:entry, :type_id, EntryType.find(:all).collect {|t| [t.description, t.id]}, {:include_blanks => true}) %>
if I put: f.select, It throws a exception…
Regards,
I tried to do it by myself, I've a model named Entry with a field named type_id (added via migration) and a model named EntryType with a field named description.
class Entry < ActiveRecord::Base
belongs_to :entry_type
The id field for this should be entry_type_id not type_id
Colin
Hey there Amador,
I must confess, I am not a rails guru here but, according to the documentation I have, the part that reads
<%= f.select('entry', 'type_id', EntryType.all.collect {|t| [t.description, t.id]}, {:include_blanks => 'None'}) %>
should end with a { :include_blanks => false } not with a 'None' string value.
The other thing here is, if an annotation of your models look something like this:
# Table name: entities # # id :integer not null, primary key # type_id :integer . . . # created_at :datetime # updated_at :datetime
# Table name: entity_types # # id :integer not null, primary key # type :string(255)
Don't use a field called type unless you are using STI. 'type' is a reserved word in Rails.
Colin