ruby-on-rails - 在 Rails 中添加下拉菜单并执行特定操作
问题描述
我是 Rails 新手,这可能是一个基本问题。我在网上查了一下,但找不到一个简单的例子(可能是我的搜索不好)。
我需要在我的视图中创建一个表单,并基于选择的值和按钮单击操作,我需要在我的控制器中执行特定操作。我可以使用以下几行在我的视图中创建一个下拉列表。
= form_tag("/rtes", method: "get") do
= label_tag(:q, "Get Trip Type:")
= select_tag(:q, options_for_select({ "a" => "r4d_001", "b" => "r4d_002" })
<br>
= button_to( "Get Trip", :action => "rtes", :controller =>:q)
其中 rtes 是我的控制器,我已将下拉值的值映射到单击按钮时需要执行的相应操作名称。这是我的控制器。
class RtesController < ApplicationController
@@client=OptimusRtesServiceModel.new
def index
end
def r4d_001
result = @@client.r4t_001()
@driver_username = result.trip.loads[0].driver_details[0].driver_user_name
@driver_password = result.trip.loads[0].driver_details[0].driver_password
@trip_id = result.trip.trip_id
@carrier_username = result.carrier_details.carrier_user_name
@carrier_password = result.carrier_details.carrier_password
end
def r4d_002
result = @@client.r4t_002()
@driver_username = result.trip.loads[0].driver_details[0].driver_user_name
@driver_password = result.trip.loads[0].driver_details[0].driver_password
@trip_id = result.trip.trip_id
@carrier_username = result.carrier_details.carrier_user_name
@carrier_password = result.carrier_details.carrier_password
end
end
现在,如果选择下拉列表中的第一个选项并单击按钮,则需要执行控制器中的“r4d_001”操作。非常感谢您的帮助。
解决方案
我稍微修改了我的代码以使其工作。这个想法是使用 rails 参数并使用 case/when 在我的控制器中执行相应的操作。
我的查看代码:
= form_tag({:controller=>"r4d", :action=>"result"}, method: :get) do
= label_tag(:q, "Trip Type: ")
= select_tag(:q, options_for_select({"a" => "1", "b" => "2"})
= submit_tag("GetDetails")
我的控制器代码:
class R4dController < ApplicationController
@@client=ServiceModel.new
def r4d_result
result = case params[:q]
when "1"
@@client.1
when "2"
@@client.2
end
@value = result.value
end
end
通过这种方式,我能够传递下拉列表的选定值并执行相应的事情。
推荐阅读
- c# - 如何在 Unity 中使用rigidbody2d.velocity 跟随对象?
- angular - Angular 6:检测带有异步管道的表单是否有实际变化
- python - 从张量流中的张量返回k个最小元素
- c# - 动态调整图片框大小时的小问题(工具提示延迟,“闪烁”)
- c# - 不支持关键字:“元数据”。在杭火
- asp.net-web-api - 如何在 lamda expresion 的帮助下通过 asp.net web api 搜索准确记录
- c - 比较输入中的字符串
- c# - WSE 3.0 WSE839 异常
- mongodb - 将 $Redact 与正则表达式一起使用
- angular - 找不到模块:错误:无法在 Angular cli 6.1.3 中解析“classlist.js”