Forum: Ruby Rails 1.0 blues

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
isamura (Guest)
on 2006-01-24 19:08
(Received via mailing list)
I am a Rails nubee but not to web app development. I've been pouring
over
the docs and tutorials for a week or two. I think have enough knowledge
to
start developing, in baby-steps.

At the moment I have a functioning guest-book with the usual CRUD
operations
that Rails is so good at. It works well for the single page,
/slurp/topic.

The problem is reuse. What is the natural Rails way to reuse the
guest-book
functionality in other controller pages, for example  /book/review.

Does one copy and paste code and templates (and create new table)? I
hope
not as this doesn't sound like a proper approach.

Please say it ain't so and convince me not to go back... ;)

TIA,

..k
Timothy G. (Guest)
on 2006-01-24 19:14
(Received via mailing list)
isamura wrote:
> Does one copy and paste code and templates (and create new table)? I hope
> not as this doesn't sound like a proper approach.
>
> Please say it ain't so and convince me not to go back... ;)
>
> TIA,
>
> .k

The models you produce are accessible from all controllers. If you
create an "Entry" model then you can use it from any controller or
directly from a view.

For the views, rails uses a system of 'partials' for repeated content.
If you want to have a common layout for guestbook entries you could
create a file called '_entry.rhtml' (note the leading underscore).
Within the same controller you can call "render :partial => 'entry'" to
render this partial once. To access it from another controller use
"render :partial => 'entries/entry'" (where 'entries' is the directory
under ./views/ that the partial is found in.)

Note that partials don't have access to the local variables of the
original view. You need to pass these in under the option 'locals'.
e.g. "render :partial => 'entry', :locals => {:entry => @entry}" will
give the partial a local variable 'entry' containing the contents of
@entry.

If you want to iterate over an array of entries, rendering the partial
for each one, use "render :partial => 'entry', :collection =>
@entries". The partial will have the local variable with the same name
as itself ('entry') set to the current entry to render.

I hope this is a decent introduction and isn't too confusing. I started
using rails about a month and a half ago and am absolutely loving it.
The book "Agile Development with Rails" provides a very good
introduction all the way from the very basics to advanced use of Rails'
powerful environment. I highly recommend it.
T.Mak (Guest)
on 2006-01-24 19:26
(Received via mailing list)
If I am incorrect, someone please correct me, but I believe one of the
goals of Rails is to be so efficient in use that you begin to forget
about the holy grail of re-use. If I remember correctly, there is a
comment on this by DHH while discussing the components feature of RoR.
In my personal experience I try to use the composed_of feature of
ActiveRecord and use generic objects to build "things". I have also
found that use of a rcs has helped me in RoR code reuse.
Mark Probert (Guest)
on 2006-01-24 20:18
(Received via mailing list)
Hi ..

I am looking for a mailing list manager in Ruby and I noticed QwikWeb
(see RAA or http://qwik.jp).  It looks ideal for my purposes, combining
a Wiki with a mailing list.

My only problem is that almost all of the documentation and web pages
are in Japanese, not my strongest language.  Has anyone done any work in
English on this project?  If so, care to share?

Many thanks,

--

-mark.
isamura (Guest)
on 2006-01-25 02:31
(Received via mailing list)
If this is a duplicate post, I do appologize...

..k

"Timothy G." <removed_email_address@domain.invalid> wrote ...
:
<snip>
:
: The models you produce are accessible from all controllers. If you
: create an "Entry" model then you can use it from any controller or
: directly from a view.
:
Of course...

: For the views, rails uses a system of 'partials' for repeated content.
: If you want to have a common layout for guestbook entries you could
: create a file called '_entry.rhtml' (note the leading underscore).
: Within the same controller you can call "render :partial => 'entry'"
to
: render this partial once. To access it from another controller use
: "render :partial => 'entries/entry'" (where 'entries' is the directory
: under ./views/ that the partial is found in.)
:
I was actually using :partials in my attempts. Eventhough it worked ok
I couldn't help but feel it doesn't quite meet my requirements.

Further readings lead me to helpers (again not quite what I want) and
components (render_component). BINGO! It seems components is
what I was after.

: Note that partials don't have access to the local variables of the
: original view. You need to pass these in under the option 'locals'.
: e.g. "render :partial => 'entry', :locals => {:entry => @entry}" will
: give the partial a local variable 'entry' containing the contents of
: @entry.
:
: If you want to iterate over an array of entries, rendering the partial
: for each one, use "render :partial => 'entry', :collection =>
: @entries". The partial will have the local variable with the same name
: as itself ('entry') set to the current entry to render.
:
: I hope this is a decent introduction and isn't too confusing. I
started
: using rails about a month and a half ago and am absolutely loving it.
: The book "Agile Development with Rails" provides a very good
: introduction all the way from the very basics to advanced use of
Rails'
: powerful environment. I highly recommend it.
:
Clear as mudd ... ;)

Seriously, a very decent explanation of render :partial that even
connect
the dots.

Thanks Tim,

..k
isamura (Guest)
on 2006-01-25 15:04
(Received via mailing list)
"Timothy G." <removed_email_address@domain.invalid> wrote ...
:
<snip>
:
: The models you produce are accessible from all controllers. If you
: create an "Entry" model then you can use it from any controller or
: directly from a view.
:
Of course...

: For the views, rails uses a system of 'partials' for repeated content.
: If you want to have a common layout for guestbook entries you could
: create a file called '_entry.rhtml' (note the leading underscore).
: Within the same controller you can call "render :partial => 'entry'"
to
: render this partial once. To access it from another controller use
: "render :partial => 'entries/entry'" (where 'entries' is the directory
: under ./views/ that the partial is found in.)
:
I was actually using :partials in my attempts. Eventhough it worked ok
I couldn't help but feel it doesn't quite meet my requirements.

Further readings lead me to helpers (again not quite what I want) and
components (render_component). BINGO! It seems components is
what I was after.

: Note that partials don't have access to the local variables of the
: original view. You need to pass these in under the option 'locals'.
: e.g. "render :partial => 'entry', :locals => {:entry => @entry}" will
: give the partial a local variable 'entry' containing the contents of
: @entry.
:
: If you want to iterate over an array of entries, rendering the partial
: for each one, use "render :partial => 'entry', :collection =>
: @entries". The partial will have the local variable with the same name
: as itself ('entry') set to the current entry to render.
:
: I hope this is a decent introduction and isn't too confusing. I
started
: using rails about a month and a half ago and am absolutely loving it.
: The book "Agile Development with Rails" provides a very good
: introduction all the way from the very basics to advanced use of
Rails'
: powerful environment. I highly recommend it.
:
Clear as mudd ... ;)

Seriously, a very decent explanation of render :partial that even
connect
the dots.

Thanks Tim,

..k
This topic is locked and can not be replied to.