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