Currently have two models
Pay and Wage
Pay has 2 columns (methods) id and name
Wage has 3 columns id, pay_id and name
Pay is set up with:
has_many :wages
Wage is:
belongs_to :pay
First, I believe this is set up correctly , according to Rails idiom.
There are many wages that can be associate with a pay.
However in trying to map wage to pay I'm having a problem with this line:
(This is an example line:)
<%= select 'model','category_id', Model.find(@model.id).categories.map
{|x| [x.name, x.id]} %>
The use of 'category_id' and 'categories' I think is throwing me off.
How does category relate to my wage model ?
TIA
Stuart
Maybe I should provide some additonal explanation in what I'm trying
to accomplish. This is using the KRJS plugin.
In the example:
# View
<%= select 'model','id' %>
<div id='select-b'>
<%= select 'model','category_id', Model.find(@model.id).categories.map
{|x| [x.name, x.id]} %>
</div>
#controller:
def on_model_id_change
render :update do |page|
@categories = Model.find(params[:dom_value]).categories
page.replace_html 'select-b', :inline=>"<%= select
'model','category_id', @categories.map {|o|
[o.name, o.id]} %>"
end
end
The thing that is throwing me here is the use of category_id and categories.
Stuart
Where does Model and it’s related categories field come from?
Jason
Model in the example is just a holder for the model name I believe.
Categories in my model doesn't exist.
so maybe my associations are wrong.
In my thinking the pay.id in Pay relates to the pay_id in the Wages table.
Yet I keep coming up with nil errors.
Stuart
Your associations and assumptions between Pay and Wage are correct from what you originally posted. Can you post the actual RHTML code that is suspect here? I’m having a hard time understanding the situation here.
Jason
I'm just going to start this all over - cause I live on the ground
floor so jumping isn't going to help. I've also looked at it every
which way and Sunday with no luck.
I'm looking at this
linkhttp://www.sciwerks.com/blog/2006/07/07/updating-select-controls-with-ajax/
where it is talking about KRJS plugin. Regardless my particular
question is not related to the plugin ...yet.
The page is talking about updating a second select box based on the
choice user makes in first. It goes on to show an example view:
# View
<%= select 'model','id' %>
<div id='select-b'>
<%= select 'model','category_id', Model.find(@model.id).categories.map
{|x| [x.name, x.id]} %>
</div>
So in the example it's clear that the 2nd select contains a column
that is tied into the first select , category.
So taking my two models Pay and Wage - where Wage contains a method
pay_id I continue to get nil errors in the place @model.id)
Stuart
<%= select 'pay', 'id', Pay.find(:all).collect {|p| [p.name, p.id]}%>
<div id='select-b'>
<%= select 'wage','pay_id', @pay.wages.map {|x| [x.name, x.id]} %>
</div>
You have a nil object when you didn't expect it!
The error occured while evaluating nil.wages
Stuart
Well, do you ever set @pay in your controller?
Jason