我想根据从数据库中获取的文本生成一个链接。此链接应该能够通过在文本字段中显示另一个值来响应 onclick 事件。
这样做的目的是显示消息标题,然后在单击给定消息时显示与单个消息有关的详细信息,而不是最初检索和传输整个文本集。
我想根据从数据库中获取的文本生成一个链接。此链接应该能够通过在文本字段中显示另一个值来响应 onclick 事件。
这样做的目的是显示消息标题,然后在单击给定消息时显示与单个消息有关的详细信息,而不是最初检索和传输整个文本集。
如果你想用不显眼的 Javascript 以 Rails 的方式制作它,你需要做接下来的事情:
首先,您需要将jquery
和添加jquery_ujs
到您的 application.js 资产(默认情况下,此文件已包含在其中)。
然后,在带有消息列表的视图文件中,使用启用了远程选项的链接app/views/messages/index.html.erb
:
<%= link_to message.title, details_path(message), :remote => true %>
远程链接会将 GET AJAX 调用发送到您的服务器,而不是简单的 GET。
在你需要准备的路线中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
文本字段中看到。