My Web application has several contexts where a collection of
ActiveRecords is
rendered. If the URL contained the partial and/or layout, the several
controller methods could be collapsed into one. What hazards, etc. lie
that
way?
TIA,
Jeffrey
2009/7/10 Jeffrey L. Taylor [email protected]:
My Web application has several contexts where a collection of ActiveRecords is
rendered. Â If the URL contained the partial and/or layout, the several
controller methods could be collapsed into one. Â What hazards, etc. lie that
way?
I, for one, do not understand what you mean. Could you give a more
detailed description, with example?
Colin
Quoting Colin L. [email protected]:
It’s an RSS readers. Users have feeds that have articles. A list of
articles
can appear in about four contexts: a paginated flat list of all unread
articles, a flat list of articles found by a search. list of all unread
articles indented under a feed (with collapse/expand icons), a list of
all
read articles under another type of header. Currently all of these have
their
own action method under two different controllers.
I think it is feasible to have one action method that is passed the
selection
criteria (unread, read, etc. articles) and a layout or partial template
to
render thru the URL. Beyond the obvious SQL injection protection and
restricting the template/layout to a known set of reasonable values,
what
hazards (security, maintenance, etc.) lie this way?
I think I can move towards and possibly achieve a RESTful API with a bit
of
squeezing state and context into the URL.
Does this way lie madness/dragons?
TIA,
Jeffrey
Work at implementing Helpers into your app. You can outline your
pagination methods in many different helper models and keep things
transparent on your views as well as make things more manageable for
yourself.
For instance,
Let’s say you have a number of pagination views you are going to use for
tables. Create a tables_helper.rb file and place your pagination
methods there that apply for table formatting etc.
Partials really only need to be created when you have multiple needs for
the same bit of code between the views on a particular model. If you
had 8 views for instance on one model and you are reusing a lot of the
same code in those views, then create partials for the code bits you are
sharing.
However, keep in mind that sometimes you may get things too messy in
your partials, especially if you use javascript or are applying
conditions. They can’t be readily checked unless you create controller
methods that look into the specific partials as they are generated.
This is why I recommend (as far as pagination goes), use helpers. They
make a world of difference.
Hello–
On Jul 10, 2009, at 2:40 PM, Jeffrey L. Taylor wrote:
etc. lie that
articles indented under a feed (with collapse/expand icons), a list
restricting the template/layout to a known set of reasonable values,
Jeffrey
If you embed that information in the URL, you wouldn’t be the first
(nor probably the last) to do it, but you are then tying your URL to
your implementation. Littering URLs with implementation details can
break bookmarks and also be confusing to search engines, which may or
may not matter to you.
Why is the querystring not sufficient? E.g.
http://my.domain.com/keenview?view=flat
. That exposes a bit of the implementation but probably won’t break if
the view key is left off.
Check out the Presenter pattern. This might help out a bit:
Quoting s.ross [email protected]:
bit of
break bookmarks and also be confusing to search engines, which may or
may not matter to you.
Why is the querystring not sufficient? E.g. http://my.domain.com/keenview?view=flat
. That exposes a bit of the implementation but probably won’t break if
the view key is left off.
Most of these contexts are AJAX responses so bookmarkability is not
relevant,
but I will keep it in mind. In fact, search results are currently not
bookmarkable because only POST requests are actually searches, any GET
request
to the URL is expected to be a pagination request. Thank you for
pointing
that out. Currently too much state is in the session, so not
bookmarkable.
I will think on this,
Jeffrey
Several years ago when I first heard about the Presenter, it didn’t make
sense. Unneeded complexity. But now maybe I’ve encountered the
problem(s) it
is a solution to. I’ll look at it.
Thanks,
Jeffrey
Quoting s.ross [email protected]:
rendered. If the URL contained the partial and/or layout, the
can appear in about four contexts: a paginated flat list of all
selection
squeezing state and context into the URL.
Does this way lie madness/dragons?
[snip]