<meta http-equiv="content-type" content="text/html;
charset=ISO-8859-1">
Hi,
I have two doubts about the right way / place to
write some
code.
Question 1:
I have a product and in the view I need to show a
listbox with
all the categories of this product.
- Option1: in the controller
make "@product_categories
= ProductCategori.all" and later in the view make "<%= f.collection_select(:product_category_id,
@product_categories, :id, :name) %>"
- Option2: in the view just
write "<%=
f.collection_select(:product_category_id, ProductCategori.all,
:id, :name) %>"
Question 2:
I need to list products with some complex
logic
- Option1: in the controller
make "@products
= Products.list(param1, param2)" and in the model "def self.list(param1, param2)" with all the
options joins, where, ...
- Option2: Put all the logic
in the controller and avoid
calling the model
Greetings
--
Miquel C. Escarré
http://railsdynamics.blogspot.com
+34 699 73 22 46
[email protected]
–
You received this message because you are subscribed to the Google
Groups “Ruby on Rails: Talk” 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/rubyonrails-talk?hl=en.
On 2 February 2012 08:50, Miquel C. [email protected] wrote:
%>"
- Option2: in the view just write “<%=
f.collection_select(:product_category_id, ProductCategori.all, :id, :name)
%>”
I would use option 1. The principle reason is that then if under some
circumstances you don’t want to show them all then the logic can go in
the controller, leaving the view alone.
Question 2:
I need to list products with some complex logic
- Option1: in the controller make “@products = Products.list(param1,
param2)” and in the model “def self.list(param1, param2)” with all the
options joins, where, …
- Option2: Put all the logic in the controller and avoid calling the
model
Never put logic in the controller if it can reasonably go in the
model. Then if the logic changes (maybe you change a detail of how
the data is stored in the database) this affects only the model and
not the controller also.
Rather than a simple method a scope may be more appropriate if the
purpose is to select a set of records from the db. That is what
scopes are for.
Colin
Thanks for the answer
El 02/02/2012 10:09, Colin L. escribi:
f.collection_select(:product_category_id, @product_categories, :id, :name)
%>"
- Option2: in the view just write “<%=
f.collection_select(:product_category_id, ProductCategori.all, :id, :name)
%>”
I would use option 1. The principle reason is that then if under some
circumstances you don’t want to show them all then the logic can go in
the controller, leaving the view alone.
I agree with this point of view, but in the other side, I find
myself repeating “@product_categories = ProductCategori.all” in several
controllers, like “new” and “edit”, and later I found that with default
scaffold, after submitting, if there is an error, this assignation
doesn’t work well, and I don’t understand exactly why (in rails 3.1.3).
the data is stored in the database) this affects only the model and
not the controller also.
Rather than a simple method a scope may be more appropriate if the
purpose is to select a set of records from the db. That is what
scopes are for.
Completely agree!
Colin
Thanks for clearing it up.
–
Miquel C. Escarr
http://railsdynamics.blogspot.com
+34 699 73 22 46
[email protected]
On 2 February 2012 15:14, Miquel C. [email protected] wrote:
Question 1:
:name)
%>"
I would use option 1. The principle reason is that then if under some
circumstances you don’t want to show them all then the logic can go in
the controller, leaving the view alone.
I agree with this point of view, but in the other side, I find myself
repeating “@product_categories = ProductCategori.all” in several
controllers, like “new” and “edit”,
Put it in a before_filter specifying the actions that need it.
and later I found that with default
scaffold, after submitting, if there is an error, this assignation doesn’t
work well, and I don’t understand exactly why (in rails 3.1.3).
I think you had better ask about that in a different thread if you
can’t sort it out. Have you read the Rails Guide on Debugging which
shows techniques for debugging your code.
Colin