Issue with passing parameter to action using link_to

Hi,

I have a controller named Users with index action.

def index puts “************* #{params[:city]}” … … end

From the view, link_to(:city, list_users_with_city_path(:city => city.name))

But when I click on this link, it doesn’t prints out anything for the params. All the “*” are being printed. The url in the browser displays,

localhost:3000/users?city=delhi

Instead when I create a new route, get ‘/users/:city’ => ‘users#index’, :as => list_users_with_city This works fine. I get proper output.

What could be the problem?

Hi,

I have a controller named Users with index action.

def index     puts "************* #{params[:city]}"     ...     ... end

From the view, link_to(:city, list_users_with_city_path(:city => city.name))

You implied below that list_users_with_city_path is not yet defined at this point so why is it not giving any errors? where did you get list_user_with_city_path if you haven't defined it in the routed yet?

Wrote this by mistake. I use it this way after defining the path. What doesn’t works is,

link_to(:city, users(:city => city.name) And this is not giving any errors but nothing is received in the index action.

Hi,

I have a controller named Users with index action.

def index     puts "************* #{params[:city]}"     ...     ... end

From the view, link_to(:city, list_users_with_city_path(:city => city.name))

You implied below that list_users_with_city_path is not yet defined at this point so why is it not giving any errors? where did you get list_user_with_city_path if you haven't defined it in the routed yet?

Wrote this by mistake. I use it this way after defining the path. What doesn't works is,

link_to(:city, users(:city => city.name) And this is not giving any errors but nothing is received in the index action.

use users_path. I'm not sure why it's not giving any errors.

Ah! Again I typed wrong. Yes, this is what I used, users_path and seems like I also missed the closing bracket for link_to up here. Certainly, it gave errors without “path”.

So, with the correct syntax, link_to(:city, users_path(:city => city.name)), it didn’t work.

Hi,

I have a controller named Users with index action.

def index     puts "************* #{params[:city]}"     ...     ... end

From the view, link_to(:city, list_users_with_city_path(:city => city.name))

You implied below that list_users_with_city_path is not yet defined at this point so why is it not giving any errors? where did you get list_user_with_city_path if you haven't defined it in the routed yet?

Wrote this by mistake. I use it this way after defining the path. What doesn't works is,

link_to(:city, users(:city => city.name) And this is not giving any errors but nothing is received in the index action.

use users_path. I'm not sure why it's not giving any errors.

Ah! Again I typed wrong. Yes, this is what I used, users_path and seems like I also missed the closing bracket for link_to up here. Certainly, it gave errors without "path".

So, with the correct syntax, link_to(:city, users_path(:city => city.name)), it didn't work.

i'm not sure why params[:city] isn't set when you reach that puts statement. It may be caused by a number of things. Can you check if it really goes to the index action, you may have declared something on your routes that takes precedence over the users resources? Paste in the log after you click on the link and you routes file (everything before the resources :users line).

If it were being directed to some other action, then *************** should not have been printed. And when I am trying to access this parameter from the view “index.html.haml”, its value is printed exactly what is being passed.

Regards Sumit Srivastava

The power of imagination makes us infinite…

If it were being directed to some other action, then *************** should not have been printed. And when I am trying to access this parameter from the view "index.html.haml", its value is printed exactly what is being passed.

You're right but you may have the same kind of puts code in other parts of your file. We're just making sure that it really is going to the index action. Try to use debugger instead of puts when you're debugging. There may be times when you're rendering the same template from a different action which is why the value is printed correctly.

Verified it. Don’t have puts anywhere else.

Regards Sumit Srivastava

The power of imagination makes us infinite…

Verified it. Don't have puts anywhere else.

ok. sorry but I ran out of ideas. without looking at the logs or the whole code, i won't be able to help.

Jim asked you to post the contents of the log (log/development.log) when you click the link. Why have you not done that? Or have I missed that message?

Colin

Verified it. Don’t have puts anywhere else.

Jim asked you to post the contents of the log (log/development.log)

when you click the link. Why have you not done that? Or have I

missed that message?

I haven’t posted the log yet because the code I posted is an example of what I am using. I can’t post the code as it is proprietary. And so the log contains info that might violate it.

> Verified it. Don't have puts anywhere else.

Jim asked you to post the contents of the log (log/development.log) when you click the link. Why have you not done that? Or have I missed that message?

I haven't posted the log yet because the code I posted is an example of what I am using. I can't post the code as it is proprietary. And so the log contains info that might violate it.

Create a new rails app and try to replicate the behavior. If you can do that, we might be able to help. If not, consult within your company. Good luck!

Thanks for the help. Will give it a try and post accordingly.