我正在尝试将元素的值传递给rails控制器!
目前,我有这样的东西:
<td id="dbname"><%= link_to db, :action => :show %></td>
这表示html表中的一行,其中包含字符串值,例如"development“。
当用户单击"development“链接时,<%= link_to ... %>从当前单击的位置获取值并将其传递给rails控制器操作,在本例中为show操作。
怎样才能做到这一点?
更新-生成链接:
<% @dbs.each do |db| %>
<tr>
<td id="dbname"><%= link_to db, :action => :show %> </td>
</tr>
更新2:
这是我的索引控制器:
conn = Mongo::Connection.new
@dbs = conn.database_names #this returns an array of strings (which are the names of the databases)
现在,我希望能够单击这些数据库,然后将单击的文本传递给rails控制器show action。我不确定如何为这些链接生成自定义资源路径...但我正在考虑使用Ajax或与javascript相关的东西来实现。也许可以使用jQuery获取所单击链接的文本,然后向rails控制器发送一个Ajax请求,并将该文本作为参数!
发布于 2012-07-16 02:46:13
我认为这是一件奇怪的事情,但一个解决方案可能是使用javascript将id附加到每个链接的href作为查询字符串。
如果你能解释一下你试图实现的目标,也许我们可以找到一个更好的解决方案。
希望它能帮上忙!
编辑:
如果你有一个链接表,我认为你应该把它们当作一种资源,并用REST的方式来管理它们。
你的控制器应该有一个索引和显示动作,你应该在路由文件中将链接声明为一个资源(也许链接它是一个保留字,你必须使用一个不同的名称,我不确定),索引动作将获取所有的链接,当你呈现它们时,你可以在控制器中为每个链接指定类似于"link_path(link.id)“的链接(记住,你应该定义一个显示动作)你将收到链接id,这样你就可以用一个简单的”link.id“加载它,并将它传递给视图。
我建议你总是寻找其他方法来解决ROR中的问题。
编辑2:
好的,让我们看看这对你是否有效:
我假设你有一个模型来表示你正在谈论的那些链接,例如:
class DataBaseLinks < ActiveRecord:Base
end
这个模型由你的数据库中的一个表来备份,如果你以rails的方式生成它,你也会有一个标识每个数据库链接的id列。
在您的控制器中,假设是DataBaseLinksController,您将拥有:
class DataBaseLinksController < ApplicationController
def index
@dabatase_links = DataBaseLink.all
end
def show
@database_link = DataBaseLink.find(params[:id])
end
end
(我已经避免了所有的验证和检查)。
在你的index.html.erb中你需要做的就是:
<% @database_links.each do |database_link| %>
<%= link_to database_link.name, database_link_path(database_link.id) %>
<% end %>
这将生成具有指向show操作的正确路径的所有链接(可能路由帮助器有一点不同,但不是很多)。
另请注意,您必须将以下行添加到routes.rb中:
resources :database_links, :only => [:index, :show]
你是如何看待它的?
编辑3:
(当我们找到一个正确的答案时,我会删除所有编辑过的答案)
好的,我假设你没有使用类似mongoid的东西,所以你没有活动的记录相似的对象。
您是否在自己的视图中尝试过此操作:
<% dbs.each do |dbs_name| %>
<%= link_to dbs_name, :controller => "your_controller", :action => :show, :dbs_name => dbs_name %>
<% end %>
https://stackoverflow.com/questions/11494419
复制相似问题