Hello,
I’m trying to implement Rails functionality which would allow to compare
Model records (in my case different plans).
I’m unsure what would be the proper approach towards this with Rails, is
there any tutorial for doing something like available on internet/book?
Which would be better: to pass the comparing model ids to the compare
controller by post or by url?
Any tips are highly appreciated.
2009/11/8 Aljaz F. [email protected]:
controller by post or by url?
Any tips are highly appreciated.
If I understand correctly you have records in the db and wish to
compare them on demand by the user clicking on a link which goes to a
compare controller. In this case I would pass the id values as
parameters of a GET request on the compare controller. It should not
be a POST as it does not cause the data in the db to be changed. The
actual compare operation should be a method of the model whose objects
are being compared of course.
Colin
How can you pass array of parameters to GET request?
Colin L. wrote:
2009/11/8 Aljaz F. [email protected]:
controller by post or by url?
Any tips are highly appreciated.
If I understand correctly you have records in the db and wish to
compare them on demand by the user clicking on a link which goes to a
compare controller. In this case I would pass the id values as
parameters of a GET request on the compare controller. It should not
be a POST as it does not cause the data in the db to be changed. The
actual compare operation should be a method of the model whose objects
are being compared of course.
Colin
Colin L. wrote:
2009/11/8 Aljaz F. [email protected]:
How can you pass array of parameters to GET request?
The same as anything else, eg
if @my_array contains [0,1,2]
<%= link_to ‘Compare’, :controller => ‘compare’, :action =>
‘do_compare’, :ids => @my_array %>
If the values you want to pass come from fields then it just a matter
of setting up the fields correctly. Google should be able to sort you
out, I always have to look it up.
If you are only comparing two records then just pass the ids as two
params.
Colin
Would it make more sense to make separate controller for comparations or
would it be better to place it inside Plans controller?
Thanks again!
2009/11/8 Aljaz F. [email protected]:
How can you pass array of parameters to GET request?
The same as anything else, eg
if @my_array contains [0,1,2]
<%= link_to ‘Compare’, :controller => ‘compare’, :action =>
‘do_compare’, :ids => @my_array %>
If the values you want to pass come from fields then it just a matter
of setting up the fields correctly. Google should be able to sort you
out, I always have to look it up.
If you are only comparing two records then just pass the ids as two
params.
Colin
2009/11/8 Aljaz F. [email protected]:
Would it make more sense to make separate controller for comparations or
would it be better to place it inside Plans controller?
Whichever makes more sense for you is the way to go. I think I would
probably put it in a compare action in the Plans controller.
Colin
What would be the best way to build the GET request url with the
specified plan ids (for instance with form where you can use checkboxes
to set the desired plans)? Would you do it with JS?
I would do it with nested routes and map.resource. You would end up
with a rout that looked like this:
/plans/:plan_id/compare/:id
If you are comparing more than one at a time then I would do what was
suggested before and pass an array of IDs as a GET request.
On Nov 8, 8:31 am, Aljaz F. [email protected]