データベースから取得したテキストに基づいてリンクを生成したいと考えています。このリンクには、テキスト フィールドに別の値を表示することで onclick イベントに応答する機能が必要です。
これの目的は、メッセージのタイトルを表示し、特定のメッセージがクリックされたときに個々のメッセージに関連する詳細を表示することです。最初にテキストのセット全体を取得して送信する必要はありません。
データベースから取得したテキストに基づいてリンクを生成したいと考えています。このリンクには、テキスト フィールドに別の値を表示することで onclick イベントに応答する機能が必要です。
これの目的は、メッセージのタイトルを表示し、特定のメッセージがクリックされたときに個々のメッセージに関連する詳細を表示することです。最初にテキストのセット全体を取得して送信する必要はありません。
目立たない Javascript を使用して Rails の方法で作成したい場合は、次のことを行う必要があります。
jquery
最初に、application.js アセットにとを追加する必要がありjquery_ujs
ます (デフォルトでは、このファイルは既に含まれています)。
次に、メッセージ リストを含むビュー ファイルで、リモート オプションを有効にしてリンクを使用しますapp/views/messages/index.html.erb
。
<%= link_to message.title, details_path(message), :remote => true %>
リモート リンクは、単純な GET の代わりに GET AJAX 呼び出しをサーバーに送信します。
details_path
次のように、準備する必要があるルートでconfig/routes.rb
:
get '/messages/:id/details' => 'messages#details'
details
メソッドを ,MessagesController
に追加しapp/controllers/messages_controller.rb
ます。
class MessagesController
def details
@details_string = # ... take it from DB via params[:id]
end
end
そして、少なくとも新しいメソッドのビュー ファイルを作成しますapp/views/messages/details.js.erb
。
$('#details-input').val('<%= @details_string %>');
したがって、ユーザーがメッセージ タイトルのリンクをクリックすると、ブラウザは AJAX 呼び出しをサーバーに送信し、Javascript のようなものを取得$('#details-input').val('Details string...');
して実行Details string...
し、#details-input
テキスト フィールドに表示されます。