Hello,

I'm using the UserEngine in my Rails application, in casu Riki. In the 
page to create a new book, the administrator can select the book 
administrator for that book, or create a new one if it does not exists. 
In that case I link_to /user/new, but in the normal case I get 
redirected to /user/list, whereas I would like to be redirected back to 
the /book/create page. I solved this in the following way:

1) I added at the top of my create.rhtml (or in the create action)
    session['return-to'] = '/books/create'
2) And I changed the new action in the user controller to

              if session['return-to']
                redirect_to session['return-to']
              else
                redirect_to :action => 'list'
              end

In that case I get redirected back to the create book page. This is one 
way, but I have the feeling that it is not the most elegant. I could of 
course copy the complete new action, but this goes against the DRY 
principle, and against the reusability of Engines. In the end, I might 
have copied all code inside my rails application. This follows a 
discussion I had with Jay:

 >Another thing to think about: You want the engine to be easily 
extensible without folks having to modify the actual engine files, or 
cut-and-paste >huge swaths of code.  So keeping subroutines short (and 
thus keeping overrides granular) is even more important than it is in 
"normal" code.  >UserEngine does a good job of keeping the "core" code 
under lib, but I still found I had to copy an entire action from 
user_controller just to change >one string.  I'm not sure I can think of 
specific patterns to encourage for extensibility, but it's something 
that should be kept in mind.

Or there other ways to solve this, I mean, reusing engine code efficiently?

By the way, I still have then another problem in this way. When the 
administrator has already filled in some fields of the form, they get 
lost when he gets back to the create page. I know this is probably more 
a Rails question in general, but does anybody has some ideas on how to 
keep the field data? My gutfeeling is that it is lost, unless I 
integrate it all together, by integrating the new user partial into the 
create form, and duplicating the user/new code.

How could this be rewritten, so the new action of the user controller 
could be reused? Or is this not the purpose of Engines, and maybe more 
of plug-ins, where Engines are meant to be more complete applications?



enjoy!

Bart
_______________________________________________
engine-users mailing list
[email protected]
http://lists.rails-engines.org/listinfo.cgi/engine-users-rails-engines.org

Reply via email to