我正在尝试将元素的值传递给rails控制器!
目前,我有这样的事情:
<td id="dbname"><%= link_to db, :action => :show %></td>
这表示html表中的一行,其中包含一个字符串值,例如“发展”。
当用户点击“开发”链接时,&lt;%= link_to ...%&gt;从当前单击的值中获取值并将其传递给rails控制器操作,在本例中为show action。
如何实现这一目标??
更新 - 生成链接:
<% @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 controller show action。我不确定如何为这些链接生成自定义资源路径...但我正在考虑使用Ajax或javascript相关的东西。也许使用jQuery获取点击链接的文本,然后将一个Ajax请求发送到rails控制器,并以文本作为参数!
答案 0 :(得分:1)
我认为您尝试做的事情很奇怪,但解决方案可能是使用javascript将id作为查询字符串附加到每个链接的href。
如果你能解释一下你想要实现的目标,我们可以找到更好的解决方案。
希望它有所帮助!
修改强>
如果您有一个链接表,我认为您应该将它们视为资源并以REST方式管理它们。
您的控制器应该有一个索引并显示操作,您应该将链接声明为路径文件中的资源(可能链接它是一个保留字,您将不得不使用不同的名称,我不确定), index action将获取所有链接,当你渲染它们时,你可以在你将收到的控制器中为每个链接指定类似于“link_path(link.id)”的链接(请记住,你应该定义一个show action)链接ID,以便您可以使用简单的“查找”加载它并将其传递给视图。
我建议您始终寻找REST方法来解决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 %>