【问题标题】:Rails select_tag onchange action WITHOUT Ajax?没有 Ajax 的 Rails select_tag onchange 操作?
【发布时间】:2011-05-19 10:29:13
【问题描述】:

在我的小时控制器的索引操作中,我希望能够在显示的小时之间切换。 我正在使用 calendar_for 表,并在日历中显示我的 rails 应用程序的不同用户的跟踪时间(小时)。 由于我使用的是一个非常复杂的日历结构,其中包含一些计算,我不知道如何将其提取为部分,所以我希望在 select_tag 中触发的 onchange 事件重新加载具有不同参数的索引操作。

我试过了

<% form_for :hours, :url => { :action => "index" } do |f| %>
  <%= select_tag :user_id, options_from_collection_for_select(User.find(:all), :id, :name),
  { :onchange => "this.form.submit();"} %>
<% end %>

但这会将我带到新的/表单视图(就像我想添加新记录一样)?网址也只显示/hours

任何帮助将不胜感激......

我基本上希望在更改选择菜单后 url 看起来像 /hours?user_id=&lt;id from select_tag&gt;

谢谢

【问题讨论】:

  • 一旦你提交了一个表单,表单元素哈希应该提交给你的控制器。您现有的代码似乎很好。我认为,您需要做的就是在您的控制器中,使用 params[:user_id] 访问 user_id 并对其进行处理并重定向到您想要的任何页面。希望对您有所帮助。

标签: ruby-on-rails ruby-on-rails-3 forms


【解决方案1】:

我不太明白为什么需要表格?我认为最简单的方法是使用类似这样的内容更新您的 application.js 文件(假设您使用 jquery):

$("#selector_id").change ( function () {
  window.location.replace('/hours?'+this.id);
});

虽然可能有一些漂亮的 Rails 助手。

【讨论】:

  • 酷!谢谢...这很好地解决了我的问题。我不得不将其更改为 window.location.replace('/hours?user_id='+$(this).val());虽然...
猜你喜欢
  • 1970-01-01
  • 2017-04-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-07
  • 1970-01-01
相关资源
最近更新 更多