我是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”操作。非常感谢您的帮助。
答案 0 :(得分:0)
Rails与您尝试使用的角度不同:q变量将选择值传递给按钮。您可以创建一个下拉菜单,而不是使用选择字段将它们发送到不同选项的不同操作。如果你想使用select字段,那么你需要javascript来处理前端任务。
答案 1 :(得分:0)
我稍微修改了我的代码以使其正常工作。我的想法是使用rails params并使用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
通过这种方式,我能够传递下拉列表的选定值并执行相应的操作。