I have a couple of models, that all have a storagelocation.
The complete storagelocation comprises the following "storage_types"
1. building
2. room
3. device
4. box
5. spot
building > room > device > box > spot
I have a StorageLocation model that uses the awesome_nested_set
plugin. So each spot is in a box, each box is in a device, each device
is in a room and each room is in a building. Using the
awesome_nested_set plugin the needed lft and rgt fields are set when a
Storagelocation is save.
When I use the storagelocations controller I have, as of now to
simplify things, 5 drop down menus, which are populated using a
collection select filtering for the storage_types 1-5. All works here.
So what I would like to use this for is the following:
I have a couple of items that actually do get stored. So let's assume
I have a sample XX and I would like to store it in a spot in box and
the box is in a device, ... you get my drift.
So instead of saving all of the storagelocation tree I only want to
save the last child of the storagelocation tree, so in a perfect case
I would like to save the id of the spot in the box as the
storagelocation_id with the sample XY.
I use a form field override by rendering the following partial:
<div id="storagelocation">
<strong>Storage Location</strong><br />
<table>
<tr>
<th>Building</th>
<td>
<%= collection_select(:store, :building_id,
Storagelocation.find(:all,
:conditions => { :storage_type =>
'building'} ), :id, :storage_name,
{:prompt => true}, {:style => "width:
200px"}) %>
</td>
</tr>
<tr>
<th>Room</th>
<td><%= collection_select(:store, :room_id,
Storagelocation.find(:all,
:conditions => { :storage_type =>
'room'} ), :id, :storage_name,
{:prompt => true},{:style => "width:
200px"}) %>
</td>
</tr>
<tr>
<th>Device</th>
<td>
<%= collection_select(:store, :device_id,
Storagelocation.find(:all,
:conditions => { :storage_type =>
'device'} ), :id, :storage_name,
{:prompt => true},{:style => "width:
200px"}) %>
</td>
</tr>
<tr>
<th>Box</th>
<td>
<%= collection_select(:store, :box_id, Storagelocation.find
(:all,
:conditions => { :storage_type =>
'box'} ), :id, :storage_name,
{:prompt => true},{:style => "width:
200px"}) %>
</td>
</tr>
<tr>
<th>Spot</th>
<td>
<%= collection_select(:store, :spot_id, Storagelocation.find
(:all,
:conditions => { :storage_type =>
'spot'} ), :id, :storage_name,
{:prompt => true},{:style => "width:
200px"}) %>
</td>
<tr>
</table>
</div>
So in addition to the regular record dataset I have a second dataset
store that has the ids of each selected storagelocation.
What I tried to get this started is this:
def before_create_save(record, store)
record.user_id = @current_user.id
record.storagelocation_id = store.spot_id
end
But it seems that As can only handle a single record set not two.
ERROR:
ArgumentError (wrong number of arguments (1 for 2)):
haml (2.0.9) lib/sass/plugin/rails.rb:19:in `process'
So I thought I assign the store.spot_id to an instance variable and
then do the following:
@store_id = store.spot_id
def before_create_save(record, store)
record.user_id = @current_user.id
record.storagelocation_id = @spot_id
end
ERROR:
NameError (undefined local variable or method `store' for
AntibodiesController:Class):
Is there a way to save information into two models that comes from one
form? I also will have to check for the last child, set storage_types
and asset_types...
Any help would be greatly appreciated!!
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"ActiveScaffold : Ruby on Rails plugin" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/activescaffold?hl=en
-~----------~----~----~----~------~----~------~--~---