Hi,

I have a strange redirection issue that I cannot figure out myself.
This is what I would like to get (the default behaviour of
activescaffold):
Via an action link in the antibodies table, associated
antibody_instances are shown nested within the antibodies list. When
whithin the nested antibody_instances list another antibody_instance
is created, after creation the create form is closed and the new
instance is shown in the nested list. (The browser stays at
http://111.dyndns.org:3001/antibodies)


What I do get:
After creating another antibody_instance in the nested table, the
antibody_instances of the respective antibody are not shown nested,
but in a non-nested list (Redirected to
http://111.dyndns.org:3001/antibody_instances?eid=9d7cf42afd28047c1f66ddaea12530ce)

This happens only for classes, that have_one storage_assignment (like
AntibodyInstance).
class Antibody
has_many :antibody_instances

class AntibodyInstance
belongs_to :antibody
has_one :storage_assignment, :as => :item, :conditions =>
"storage_assignments.item_type = 'AntibodyInstance'", :dependent
=> :delete
has_one :storage, :through => :storage_assignment, :as => :item

class Storage
has_many :storage_assignments
has_many :antibody_instances, :through
=> :storage_assignments, :source => :item, :source_type =>
"AntibodyInstance"

class StorageAssignment
belongs_to :storage, :class_name => '::Storage' # otherwise, it
clashes with PaperClip::Storage
belongs_to :item, :polymorphic => true
belongs_to :slot

class Slot
has_many :storage_assignments
belongs_to :grid

class Grid
has_many :slots
belongs_to :storage_assignment



The nested create-post of a well behaving class (does not have_one
storage_assignment) looks like:

Processing MarkersController#create (for 11.111.111.111 at 2011-05-03
11:19:32) [POST]
  Parameters: {"eid"=>"3f1ea33b0ab5b9c5bfe3ce2dc256ee35",
"parent_column"=>"children", "commit"=>"Create", "nested"=>"true",
"action"=>"create",
"authenticity_token"=>"MibMg6+ktEG12PyKSBQKr0fVWpHVtvQhD3rC+v99ukA=",
"parent_model"=>"Marker", "controller"=>"markers",
"record"=>{"name"=>"löschen"}}
create_authroized: {:parent=>"1"}
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= '1') LIMIT 1
  User Columns (0.6ms)   SHOW FIELDS FROM `users`
  User Load (0.2ms)   SELECT * FROM `users` WHERE (`users`.`id` = '1')
LIMIT 1
  SQL (0.1ms)   BEGIN
  User Update (0.2ms)   UPDATE `users` SET `updated_at` = '2011-05-03
11:19:32', `last_request_at` = '2011-05-03 11:19:32' WHERE `id` = 1
  SQL (100.3ms)   COMMIT
  SQL (0.1ms)   BEGIN
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 1)
  Marker Load (0.2ms)   SELECT `markers`.id FROM `markers` WHERE
(`markers`.`name` = BINARY 'löschen') LIMIT 1
  CACHE (0.0ms)   SELECT `markers`.id FROM `markers` WHERE
(`markers`.`name` = BINARY 'löschen') LIMIT 1
  SQL (0.9ms)   SELECT max(`markers`.rgt) AS max_rgt FROM `markers`
  Marker Create (0.2ms)   INSERT INTO `markers` (`name`, `created_at`,
`updated_at`, `lft`, `user_id`, `parent_id`, `rgt`) VALUES('löschen',
'2011-05-03 11:19:32', '2011-05-03 11:19:32', 3331, NULL, 1, 3332)
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 1) ORDER BY `lft`
  Marker Load (0.2ms)   SELECT `lft`, `rgt`, `parent_id` FROM
`markers` WHERE (`markers`.`id` = 1721)
  Marker Update (21.5ms)   UPDATE `markers` SET `lft` = CASE WHEN
`lft` BETWEEN 6 AND 3330 THEN `lft` + 3332 - 3330 WHEN `lft` BETWEEN
3331 AND 3332 THEN `lft` + 6 - 3331 ELSE `lft` END, `rgt` = CASE WHEN
`rgt` BETWEEN 6 AND 3330 THEN `rgt` + 3332 - 3330 WHEN `rgt` BETWEEN
3331 AND 3332 THEN `rgt` + 6 - 3331 ELSE `rgt` END, `parent_id` = CASE
WHEN id = 1721 THEN 1 ELSE `parent_id` END
  Marker Load (0.2ms)   SELECT `lft`, `rgt`, `parent_id` FROM
`markers` WHERE (`markers`.`id` = 1)
  Marker Load (0.2ms)   SELECT `lft`, `rgt`, `parent_id` FROM
`markers` WHERE (`markers`.`id` = 1721)
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 1)
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 1) ORDER BY `lft`
  CACHE (0.0ms)   SELECT `lft`, `rgt`, `parent_id` FROM `markers`
WHERE (`markers`.`id` = 1721)
  SQL (127.5ms)   COMMIT
Rendering on_create
  CellLine Columns (0.7ms)   SHOW FIELDS FROM `cell_lines`
  SQL (0.3ms)   SELECT count(*) AS count_all FROM `cell_lines` WHERE
(`cell_lines`.marker_id = 1721)
  CACHE (0.0ms)   SELECT * FROM `markers` WHERE (`markers`.`id` = 1)
  Antibody Columns (0.6ms)   SHOW FIELDS FROM `antibodies`
  SQL (0.4ms)   SELECT count(*) AS count_all FROM `antibodies` WHERE
(`antibodies`.marker_id = 1721)
  SQL (1.3ms)   SELECT count(*) AS count_all FROM `markers` WHERE
((`markers`.id != 1721) AND (`markers`.`lft` >= 6 AND `markers`.`rgt`
<= 7))
Rendered _list_actions (122.4ms)
Rendered _list_record (137.8ms)
Rendered _messages (1.0ms)
Completed in 451ms (View: 156, DB: 258) | 200 OK [http://
111.dyndns.org/markers?
eid=3f1ea33b0ab5b9c5bfe3ce2dc256ee35&nested=true&parent_column=children&parent_model=Marker]


For a class where false redirection to the non-nested list occurs, it
looks like:

Processing AntibodyInstancesController#create (for 11.111.111.111 at
2011-05-03 11:26:50) [POST]
  Parameters: {"eid"=>"9d7cf42afd28047c1f66ddaea12530ce",
"parent_column"=>"antibody_instances", "commit"=>"Create",
"nested"=>"true", "action"=>"create",
"authenticity_token"=>"MibMg6+ktEG12PyKSBQKr0fVWpHVtvQhD3rC+v99ukA=",
"parent_model"=>"Antibody", "controller"=>"antibody_instances",
"record"=>{"opened(3i)"=>"3", "usebefore_status"=>"unknown",
"storage_assignment"=>{"storage"=>{"id"=>"8"}},
"lotnumber"=>"lsöchen", "usebefore(1i)"=>"2011",
"opened_status"=>"unopened", "usebefore(2i)"=>"5",
"opened(1i)"=>"2011", "usebefore(3i)"=>"3", "opened(2i)"=>"5"}}
  User Load (0.2ms)   SELECT * FROM `users` WHERE (`users`.`id` = '1')
LIMIT 1
  SQL (0.1ms)   BEGIN
  User Update (0.2ms)   UPDATE `users` SET `updated_at` = '2011-05-03
11:26:50', `last_request_at` = '2011-05-03 11:26:50' WHERE `id` = 1
  SQL (142.7ms)   COMMIT
  Antibody Load (0.2ms)   SELECT * FROM `antibodies` WHERE
(`antibodies`.`id` = '619') LIMIT 1
  SourceKind Load (0.2ms)   SELECT * FROM `source_kinds` WHERE
(`source_kinds`.`id` = 1)
  SQL (0.1ms)   BEGIN
  Storage Load (0.2ms)   SELECT * FROM `storages` WHERE
(`storages`.`id` = 8)
  Antibody Load (0.2ms)   SELECT * FROM `antibodies` WHERE
(`antibodies`.`id` = 619)
  CACHE (0.0ms)   SELECT * FROM `source_kinds` WHERE
(`source_kinds`.`id` = 1)
  Storage Load (0.6ms)   SELECT `storages`.id FROM `storages` WHERE
(`storages`.`name` = BINARY 'BNI' AND `storages`.parent_id IS NULL AND
`storages`.id <> 8) LIMIT 1
  AntibodyInstance Create (0.2ms)   INSERT INTO `antibody_instances`
(`created_at`, `opened`, `mass`, `updated_at`, `tests`, `antibody_id`,
`concentration`, `lotnumber`, `user_id`, `volume`, `usebefore`,
`isexhausted`) VALUES('2011-05-03 11:26:50', NULL, NULL, '2011-05-03
11:26:50', NULL, 619, NULL, 'lsöchen', 1, NULL, NULL, 0)
  StorageAssignment Create (0.2ms)   INSERT INTO `storage_assignments`
(`storage_id`, `created_at`, `updated_at`, `slot_id`, `item_id`,
`item_type`) VALUES(8, '2011-05-03 11:26:50', '2011-05-03 11:26:50',
NULL, 794, 'AntibodyInstance')
  SQL (112.5ms)   COMMIT
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 519)
  Conjugate Load (0.2ms)   SELECT * FROM `conjugates` WHERE
(`conjugates`.`id` = 19)
  Manufacturer Load (0.2ms)   SELECT * FROM `manufacturers` WHERE
(`manufacturers`.`id` = 20)
Redirected to 
http://111.dyndns.org:3001/antibody_instances?eid=9d7cf42afd28047c1f66ddaea12530ce
Completed in 290ms (DB: 266) | 302 Found [http://111.dyndns.org/
antibody_instances?
eid=9d7cf42afd28047c1f66ddaea12530ce&nested=true&parent_column=antibody_instances&parent_model=Antibody]
  SQL (0.0ms)   SET NAMES 'utf8'
  SQL (0.0ms)   SET SQL_AUTO_IS_NULL=0
  AntibodyInstance Columns (0.6ms)   SHOW FIELDS FROM
`antibody_instances`
  Antibody Columns (0.7ms)   SHOW FIELDS FROM `antibodies`
  User Columns (0.6ms)   SHOW FIELDS FROM `users`
  Conjugate Columns (0.4ms)   SHOW FIELDS FROM `conjugates`
  Isotypeh Columns (0.4ms)   SHOW FIELDS FROM `isotypehs`
  Isotypel Columns (0.4ms)   SHOW FIELDS FROM `isotypels`
  Manufacturer Columns (0.4ms)   SHOW FIELDS FROM `manufacturers`
  Marker Columns (0.5ms)   SHOW FIELDS FROM `markers`
  Origin Columns (0.4ms)   SHOW FIELDS FROM `origins`
  ReagentType Columns (0.4ms)   SHOW FIELDS FROM `reagent_types`
  SourceKind Columns (0.4ms)   SHOW FIELDS FROM `source_kinds`
  StorageAssignment Columns (0.4ms)   SHOW FIELDS FROM
`storage_assignments`
  Slot Columns (0.4ms)   SHOW FIELDS FROM `slots`
  Grid Columns (0.4ms)   SHOW FIELDS FROM `grids`
  Storage Columns (0.4ms)   SHOW FIELDS FROM `storages`
  Group Columns (0.4ms)   SHOW FIELDS FROM `groups`


Processing AntibodyInstancesController#index (for 11.111.111.111 at
2011-05-03 11:26:53) [GET]
  Parameters: {"eid"=>"9d7cf42afd28047c1f66ddaea12530ce",
"action"=>"index", "controller"=>"antibody_instances"}
  Antibody Load (0.2ms)   SELECT * FROM `antibodies` WHERE
(`antibodies`.`id` = '619') LIMIT 1
  SourceKind Load (0.2ms)   SELECT * FROM `source_kinds` WHERE
(`source_kinds`.`id` = 1)
  SQL (4.3ms)   SELECT count(DISTINCT `antibody_instances`.id) AS
count_all FROM `antibody_instances` LEFT OUTER JOIN `users` ON
`users`.id = `antibody_instances`.user_id LEFT OUTER JOIN
`storage_assignments` ON `storage_assignments`.item_id =
`antibody_instances`.id AND `storage_assignments`.item_type =
'AntibodyInstance'AND storage_assignments.item_type =
'AntibodyInstance' LEFT OUTER JOIN `comments` ON `comments`.item_id =
`antibody_instances`.id AND `comments`.item_type = 'AntibodyInstance'
LEFT OUTER JOIN `attachments` ON `attachments`.item_id =
`antibody_instances`.id AND `attachments`.item_type =
'AntibodyInstance' LEFT OUTER JOIN `antibodies` ON `antibodies`.id =
`antibody_instances`.antibody_id WHERE
(((antibody_instances.antibody_id = '619')))
  AntibodyInstance Load (0.9ms)   SELECT `antibody_instances`.* FROM
`antibody_instances` WHERE (((antibody_instances.antibody_id =
'619'))) ORDER BY `antibody_instances`.`created_at` DESC LIMIT 0, 40
  User Load (0.2ms)   SELECT * FROM `users` WHERE (`users`.`id` = 1)
  StorageAssignment Load (0.8ms)   SELECT `storage_assignments`.* FROM
`storage_assignments` WHERE (`storage_assignments`.`item_id` IN
(794,793,792) and `storage_assignments`.`item_type` =
'AntibodyInstance' AND (storage_assignments.item_type =
'AntibodyInstance'))
  Comment Load (0.5ms)   SELECT `comments`.* FROM `comments` WHERE
(`comments`.`item_id` IN (794,793,792) and `comments`.`item_type` =
'AntibodyInstance')
  Attachment Load (1.1ms)   SELECT `attachments`.* FROM `attachments`
WHERE (`attachments`.`item_id` IN (794,793,792) and
`attachments`.`item_type` = 'AntibodyInstance')
  Antibody Load (0.2ms)   SELECT * FROM `antibodies` WHERE
(`antibodies`.`id` = 619)
Rendering template within layouts/application
Rendering list
  User Load (0.2ms)   SELECT * FROM `users` WHERE (`users`.`id` = '1')
LIMIT 1
  SQL (0.1ms)   BEGIN
  User Update (0.2ms)   UPDATE `users` SET `updated_at` = '2011-05-03
11:26:53', `last_request_at` = '2011-05-03 11:26:53' WHERE `id` = 1
  SQL (90.4ms)   COMMIT
Rendered _list_header (113.4ms)
Rendered _list_column_headings (38.8ms)
Rendered _messages (1.1ms)
  Group Load (0.2ms)   SELECT * FROM `groups` WHERE (`groups`.`id` =
9)
  Group Load (0.3ms)   SELECT * FROM `groups` WHERE (`groups`.`lft` <=
4 AND `groups`.`rgt` >= 5) ORDER BY `lft`
  Storage Load (0.8ms)   SELECT `storages`.* FROM `storages` INNER
JOIN `storage_assignments` ON `storages`.id =
`storage_assignments`.storage_id WHERE ((`storage_assignments`.item_id
= 794) AND (`storage_assignments`.item_type = 'AntibodyInstance') AND
((storage_assignments.item_type = 'AntibodyInstance')))
  Storage Load (0.5ms)   SELECT * FROM `storages` WHERE
(`storages`.`lft` <= 1 AND `storages`.`rgt` >= 856) ORDER BY `lft`
  SourceKind Load (0.2ms)   SELECT * FROM `source_kinds` WHERE
(`source_kinds`.`id` = 1)
  Attachment Columns (0.5ms)   SHOW FIELDS FROM `attachments`
  Marker Load (0.2ms)   SELECT * FROM `markers` WHERE (`markers`.`id`
= 519)
  Conjugate Load (0.2ms)   SELECT * FROM `conjugates` WHERE
(`conjugates`.`id` = 19)
  Manufacturer Load (0.2ms)   SELECT * FROM `manufacturers` WHERE
(`manufacturers`.`id` = 20)
Rendered _list_actions (19.5ms)
Rendered _list_record (53.1ms)
  CACHE (0.0ms)   SELECT * FROM `groups` WHERE (`groups`.`lft` <= 4
AND `groups`.`rgt` >= 5) ORDER BY `lft`
  Storage Load (0.7ms)   SELECT `storages`.* FROM `storages` INNER
JOIN `storage_assignments` ON `storages`.id =
`storage_assignments`.storage_id WHERE ((`storage_assignments`.item_id
= 793) AND (`storage_assignments`.item_type = 'AntibodyInstance') AND
((storage_assignments.item_type = 'AntibodyInstance')))
  CACHE (0.0ms)   SELECT * FROM `storages` WHERE (`storages`.`lft` <=
1 AND `storages`.`rgt` >= 856) ORDER BY `lft`
Rendered _list_actions (5.7ms)
Rendered _list_record (16.7ms)
  CACHE (0.0ms)   SELECT * FROM `groups` WHERE (`groups`.`lft` <= 4
AND `groups`.`rgt` >= 5) ORDER BY `lft`
  Storage Load (0.7ms)   SELECT `storages`.* FROM `storages` INNER
JOIN `storage_assignments` ON `storages`.id =
`storage_assignments`.storage_id WHERE ((`storage_assignments`.item_id
= 792) AND (`storage_assignments`.item_type = 'AntibodyInstance') AND
((storage_assignments.item_type = 'AntibodyInstance')))
  CACHE (0.0ms)   SELECT * FROM `storages` WHERE (`storages`.`lft` <=
1 AND `storages`.`rgt` >= 856) ORDER BY `lft`
Rendered _list_actions (5.6ms)
Rendered _list_record (16.3ms)
Rendered _list (265.3ms)
Completed in 432ms (View: 313, DB: 112) | 200 OK [http://
111.dyndns.org/antibody_instances?
eid=9d7cf42afd28047c1f66ddaea12530ce]

Why does the redirect occur and how can I prevent it?

Thanks
Guido

-- 
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.

Reply via email to