0

要素の値をRailsコントローラーに渡そうとしています!

現在、私はこのようなものを持っています:

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

これは、「development」などの文字列値を含むhtmlテーブルの行を表します。

ユーザーが「開発」リンクをクリックすると、<%= 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コントローラーのshowactionに渡すことができるようにします。これらのリンクのカスタムリソースパスをどのように生成するかはわかりませんが、Ajaxまたはjavascript関連のものを使用して生成することを検討していました。たぶん、jQueryを使用してクリックされたリンクのテキストを取得し、そのテキストをパラメーターとしてRailsコントローラーにAjaxリクエストを送信します。

4

1 に答える 1

1

あなたがやろうとしていることは奇妙なことだと思いますが、解決策はjavascriptを使用して、クエリ文字列として各リンクのhrefにIDを追加することです。

あなたが達成しようとしていることを少し説明できれば、もっと良い解決策を見つけることができるかもしれません。

それが役に立てば幸い!

編集:

リンクのテーブルがある場合は、それらをリソースと見なし、RESTの方法で管理する必要があると思います。

コントローラにはインデックスとshowアクションが必要であり、ルートファイルでリンクをリソースとして宣言する必要があります(リンクは予約語であり、別の名前を使用する必要がありますが、わかりません)。インデックスアクションは次のようになります。すべてのリンクをフェッチし、それらをレンダリングするときに、リンクIDを受け取るコントローラーで「link_path(link.id)」(showアクションを定義する必要があることを忘れないでください)のようなもので各リンクのリンクを指定できます。したがって、単純な「検索」を使用してロードし、ビューに渡すことができます。

RORの問題を解決するためのRESTの方法を常に探すことをお勧めします。

編集2:

さて、これがあなたのために働くかどうか見てみましょう:

あなたが話しているリンクを表すモデルがあると思います。たとえば、次のようになります。

class DataBaseLinks < ActiveRecord:Base

end

このモデルはデータベース内のテーブルによってバックアップされます。レールの方法で生成した場合は、各データベースリンクを識別する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:

(正しい回答が見つかったら、編集した回答をすべて削除します)

さて、あなたはモンゴイドのようなものを使用していないので、同様のオブジェクトをアクティブに記録していないと仮定します。

あなたはあなたの見解でこれを試しましたか?

<% 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 に答える