I’m trying to pass the value of a element to a rails controller!
Currently, I have something like this:
<td id="dbname"><%= link_to db, :action => :show %></td>
This represents a row in an html table, which contains a string value, e.g. “development”.
When the user clicks on the “development” link, the <%= link_to … %> grabs the value from the current clicked and passes that to a rails controller action, in this case the show action.
How can this be achieved!?
UPDATE – generating links:
<% @dbs.each do |db| %>
<tr>
<td id="dbname"><%= link_to db, :action => :show %> </td>
</tr>
UPDATE 2:
this is my index controller:
conn = Mongo::Connection.new
@dbs = conn.database_names #this returns an array of strings (which are the names of the databases)
Now I want to be able to click on of these databases and then to pass the clicked text to the rails controller show action. I’m not sure how I would generate a custom resources path for these links… but I was contemplating of doing it using Ajax or something javascript related. Maybe get the text of clicked link using jQuery and then send an Ajax request to the rails controller with the text as a parameter!
I think that it’s a strange thing what you’re trying to do, but a solution could be to use javascript to append the id to the href of each link as a query string.
If you could explain a little bit what you’re trying to achieve maybe we could find a better solution.
Hope it helps!
Edit:
If you have a table of links I think that you should consider them as a resource and managing them the REST way.
Your controller should have an index and show action and you should declare the links as a resource in the routes file (maybe link it’s a reserved word and you will have to use a different name, I’m not sure), the index action will fetch all the links and when you render them, you could specify the link for each one with something similar to “link_path(link.id)” (remember, you should have a show action defined) in the controller you will receive the link id so you could load it with a simple “find” and pass it to the view.
I recommend you to always look for the REST way to solve a problem in ROR.
Edit 2:
Ok let’s see if this works for you:
I suppose that you have a model that represent those links that you’re talkin about, for example:
This model with be backed up by a table in your database, if you have generated it the rails way, you will also have an id column that identify each database link.
in your controller, let’s say DataBaseLinksController, you’ll have:
(I’ve avoided all the validations and checks).
All you have to do in your index.html.erb is:
This will generate all the links with the correct path to the show action (maybe the route helper is a little bit different, but not so much).
Notice also that you’ll have to add into your routes.rb the following line:
How do you see it?
Edit 3:
(I’ll delete all my edited answers when we find a correct one)
Ok I’m going to suppose that you are not using something like mongoid so you don’t have active record similar objects.
Have you tried this in your view: