Question regarding controller actions (And a little bit of REST)

Hi Guys,

I am developing a blog system with Rails and I have a question about the following matter:

My client wants me to create an approve and disapprove action for the comments.

So, I did create two actions in the rails comment controller called by a put method, since the only thing they do is change the approved collumn at the database. I am still not familiar with REST, so I decided to ask what you would do in a situation like this.

Another way I was thinking is create an action update and there I would handle if I get a params[:approve] or a params[:disapprove]. I know it is a quite simple question, but I did research, but I think I didn’t find the right keywords to look for it.

Thanks for any inputs in advance.

Marco Antonio

I would try to use 2 radio buttons, or a select box with values:

* Approved
* Not approved
* ... other states

Then, you embed the processing of these values in the UPDATE action.
For a select box, this might help you to start:

<li>
  <%= select(:blogpost, "status_id", Status.all.collect {|p| [ p.name,
p.id ] }) %>
</li>

hph,

patrick

Hi Marco,

Hi Guys,
I am developing a blog system with Rails and I have a question about the
following matter:
My client wants me to create an approve and disapprove action for the
comments.
So, I did create two actions in the rails comment controller called by a put
method, since the only thing they do is change the approved collumn at the
database. I am still not familiar with REST, so I decided to ask what you
would do in a situation like this.
Another way I was thinking is create an action update and there I would
handle if I get a params[:approve] or a params[:disapprove].

I think, in the end, you're making a choice is between:

/blog/23/comments/4/approve

and

/blog/23/comments/4?approve

From a REST perspective, the latter is probably slightly more
preferred. Fielding's dissertation does not provide a prescription at
this level of detail, focusing instead on the need for unique resource
identifiers. In the sense that the resource itself is more clearly
identified in your proposal, I would venture an opinion that it is
more RESTful than your client's proposal. But I wouldn't get wrapped
around the axle with a client on that point.

From a code maintenance perspective,however, the latter is much more
preferable in that it requires only one method (update) instead of two
(approve/disapprove). Additionally, the Rails routing engine
supports / generates the CRUD methods by default, whereas you will
need to do extra work to support your client's request. That reduced
complexity translates to $$$ which, in my experience, typically
engages clients instantly.

HTH,
Bill

Thank you guys.

Bill, you helped me a lot. That was exactly what I needed to hear.

Well, I came here once again just to share this article that I found that answers my questions too. In case someone have the same question.

http://dathompson.blogspot.com/2008/07/restful-rails-passing-url-parameters.html

Regards,
Marco Antonio