Добавляем выпадающее меню в рельсы и выполняем определенные действия - PullRequest
0 голосов
/ 25 апреля 2018

Я новичок в рельсах, и это может быть основным вопросом.Я проверил в интернете, но не смог найти простой пример (возможно, мой поиск плох).

Мне нужно создать форму в моем представлении, основанную на выбранном значении и действии нажатия кнопки, которое мне нужно выполнить.конкретное действие в моем контроллере.Я могу создать раскрывающийся список, используя следующие строки:

= 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» в контроллере.Ваша помощь высоко ценится.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Я немного изменил свой код, чтобы он заработал. Идея состоит в том, чтобы использовать параметры 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")

Код моего Contoller:

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

Таким образом, я могу передать выбранное значение раскрывающегося списка и выполнить соответствующую вещь.

0 голосов
/ 25 апреля 2018

Rails не похож на угловой, который вы пытаетесь использовать: переменная q для передачи значения выбора кнопке. Вы можете создать раскрывающееся меню вместо использования поля выбора, чтобы отправить их в другое действие для другой опции. Тем не менее, если вы хотите использовать поле выбора, то вам нужен javascript для обработки внешней задачи здесь.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...