0

我正在尝试将元素的值传递给 rails 控制器!

目前,我有这样的事情:

<td id="dbname"><%= link_to db, :action => :show %></td>

这表示 html 表中的一行,其中包含一个字符串值,例如“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 控制器的显示操作。我不确定如何为这些链接生成自定义资源路径......但我正在考虑使用 Ajax 或与 javascript 相关的东西来完成它。也许使用 jQuery 获取点击链接的文本,然后将 Ajax 请求发送到 rails 控制器,并将文本作为参数!

4

1 回答 1

1

我认为您尝试做的事情很奇怪,但解决方案可能是使用 javascript 将 id 作为查询字符串附加到每个链接的 href 中。

如果您能稍微解释一下您要达到的目标,也许我们可以找到更好的解决方案。

希望能帮助到你!

编辑:

如果您有一个链接表,我认为您应该将它们视为一种资源并以 REST 方式管理它们。

你的控制器应该有一个索引和显示动作,你应该在路由文件中将链接声明为资源(也许链接它是一个保留字,你必须使用不同的名称,我不确定),索引动作将获取所有链接,当您渲染它们时,您可以在控制器中使用类似于“link_path(link.id)”的内容为每个链接指定链接(请记住,您应该定义一个显示操作)您将收到链接 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 %> 
于 2012-07-15T18:46:13.323 回答