sha*_*jin 2 jquery ruby-on-rails
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :remote => true, :method => :post %>
Run Code Online (Sandbox Code Playgroud)
有没有办法通过给定的链接传递 search_name 文本字段的值?
如果您尝试将值发布到服务器,您应该使用 HTML 表单。这就是它们的设计目的。事实上,当您:method => :post为帮助程序指定 as on 选项时link_to,Rails 会动态创建一个 HTML 表单,单击链接时会立即发送该表单。为什么不直接这样做呢?
<%= form_tag '/save_search' do -%>
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= submit_tag 'Save search' %>
<% end -%>
Run Code Online (Sandbox Code Playgroud)
这将根据需要将值发布到服务器(可在params[:search_name]控制器操作内部访问)。
如果这是一个美观问题(例如,您认为按钮很丑并且需要链接),您始终可以将提交按钮设置为看起来像带有普通旧 CSS 的链接。对于用户来说,它看起来像一个链接,但更重要的是,它的行为就像一个按钮,并且无需任何附加逻辑即可提交表单。
如果您仍然不相信使用表单是正确的方法,并且您热衷于让它发挥作用,那么您可以使用 jQuery 来实现。让我们拿你的示例代码稍微修改一下
<%= text_field_tag 'search_name', :class => 'search_save' %>
<%= link_to "Save search" , save_search_path(@some_value), :id => 'save_search' %>
Run Code Online (Sandbox Code Playgroud)
然后在你的里面application.js你可以添加以下内容。
$(function() {
// Add click event binding to `Save search` link
$("#save_search").on("click", function(event) {
event.preventDefault(); // don't trigger default
// get the value inside the text field
var name = $("#search_name").val();
$.post('/save_search', { search_name: name }, function(data) {
// log the result from the server, or whatever...
console.log(data);
});
});
});
Run Code Online (Sandbox Code Playgroud)
当有人单击“保存搜索”链接时,此事件将被触发,并将使用指定的数据对服务器进行 AJAX 调用(除非用户做了一些愚蠢的事情,例如禁用 JavaScript)。控制器操作将能够通过访问此数据params[:search_name]。希望这可以帮助。快乐编码!
| 归档时间: |
|
| 查看次数: |
6432 次 |
| 最近记录: |