【问题标题】:Drop down select ruby rails下拉选择红宝石导轨
【发布时间】:2011-07-28 00:14:01
【问题描述】:

这是包含下拉列表的表单的代码 -

<div class="field">
<%= f.label :type, "Select profile type"%>
<%=
f.select :type, Profile::TYPES,
:prompt => "Select a profile type"
%>
</div>

下拉菜单看起来不错。但是,我将如何检查选择了哪个选项?我想根据此选择路由到不同的视图。

提前致谢!

【问题讨论】:

  • 你会用javascript检查。

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


【解决方案1】:

路由到不同视图的逻辑应该发生在您的控制器中。当用户提交此表单时,检查参数的值,并执行您的逻辑以路由到视图:

class ExampleController

  def routing
    case params[:example][:type]
    when 'foo'
      redirect_to foo_path
    when 'bar'
      redirect_to bar_path
  end
end

您可以创建自定义操作名称,因为此路由不是 CRUD 操作之一。如果它是自定义名称,则需要将此路由放入 config/routes.rb 文件中。

(可选)您可以绑定到 select 的 onChange 事件,正如其他人提到的那样,当用户更改值时自动提交表单。这仍然会将数据发送到控制器并执行重定向。这种方法的优点是您可以将路线信息保留在 Javascript 之外,并保留在 Rail 的控制器中。

更多关于 Rails 路由的信息可以在这里找到:http://guides.rubyonrails.org/routing.html 更多关于 Javascript 绑定到 onChange 的信息可以在这里找到:http://www.w3schools.com/jsref/event_onchange.asp

【讨论】:

  • 我尝试了第一个选项,在我的控制器中添加了一个名为“route”的自定义操作,并在我的 routes.rb 文件中添加了路径。现在,我收到了这个错误——“ProfilesController#route 中的 NoMethodError 你没有预料到它有一个 nil 对象!你可能期望一个 Array 的实例。在评估 nil.[] 时发生错误”......任何帮助表示赞赏。谢谢!
【解决方案2】:

您应该能够使用 jQuery 或任何其他流行的 Javascript 框架来实现这一点——或者附加一个 onChange 侦听器,或者在某处设置值并检查它。活动,是的,等等。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多