как выполнить действие контроллера, выбрав опцию раскрывающегося списка в рельсах 4

0

Я очень свежее в ROR и в моем приложении у меня есть role модели. Теперь на этой странице индекса я разместил раскрывающийся список сверху, чтобы пользователь мог выбрать конкретную роль и выполнить действие соответственно, просто выбрав опцию списка dopdown и щелкнув, чтобы отправить, что действие должно быть выполнено. Я не хочу делать это по link_to Кто-нибудь может объяснить мне, какие шаги мне нужно выполнить. Я знаю, что это может быть выполнено JQuery, но я также плохой в этом.

для вашего легкого понимания Я загрузил снимок экрана Изображение 174551

Я видел этот Rubyforum, qaru.site/questions/6205107/... но все еще не могу понять. Я ценю, если кто-нибудь сможет объяснить меня подробно шаг за шагом.. или предоставить мне лучший и легкий ресурс. Я не могу понять, с чего начать?

Некоторый код:

index.html.haml

.user_details.clearfix
  = form_for :role do |f|
    %h3 Listing Roles
    .selectbox.blueselect.frd
      = f.select(:name, [['Delete', 'delete'], ['Change Status', 'changestatus']],{:include_blank=> 'Select Action'},{:class=>'select1'})
      = f.submit 'Submit', :class=>'blue_btn frd'

    %label.actionlabel Actions
#accordion.tablerow.clearfix
  %table.tablelist{border: "0", cellpadding: "0", cellspacing: "0", width: "100%"}
    %tr
      %th{align: "left", valign: "middle"}  
      %th{align: "left", valign: "middle"} Sr. No.
      %th{align: "left", valign: "middle"} Name
      %th{align: "left", valign: "middle"} Description
      %th{align: "left", valign: "middle"} Is Active?
      %th{align: "left", valign: "middle"} Access Module
      %th{align: "left", valign: "middle"}
      %th{align: "left", valign: "middle"}
    - @count=0
    - @roles.each do |role|
      %tr
        %td{align: "left", valign: "middle"}
          %input.checkbox{type: "checkbox", :id=>'chkbox', :value=> role.id, :onclick=>"validate(this.value)"}
        %td{align: "left", valign: "middle"}= @count += 1
        %td{align: "left", valign: "middle"}= role.name
        %td{align: "left", valign: "middle"}= role.description
        %td{align: "left", valign: "middle"}= role.isactive
        %td{align: "left", valign: "middle"}= role.access_module_roles.map { |amr| amr.access_module.name }.join(", ")
        %td{align: "left", valign: "middle"}= link_to 'Show', role
        %td{align: "left", valign: "middle"}= link_to 'Edit', edit_role_path(role)
        %td{align: "left", valign: "middle"}= link_to 'Delete', role_path(role), :method=> :delete
  %br
  = link_to 'New Role', new_role_path, :class=>'blue_btn'

Любой человек нуждается в более подробной информации, после чего я могу обновить.. хочу выполнить действие delete

Теги:
forms
haml

1 ответ

1

Без использования javascript вы не можете изменить действие из выбранного. Действие определяется URL, который называется по форме представления, которое, в свою очередь, указанная в action атрибуте формы. Все, что может сделать выбор или любой другой ввод формы, заключается в изменении параметров, которые были отправлены на этот URL-адрес.

Однако это не означает, что все потеряно: это означает, что вам либо нужно

a) измените атрибут action формы с помощью javascript при выборе изменений

б) измените свой код контроллера так, чтобы форма отправилась на один фиксированный URL-адрес, но действие в контроллере делает разные вещи в зависимости от параметров. Что-то вроде

#in the controller
@foo = Foo.find(params[:id])
if params[:foo_action] == "destroy"
  @foo.destroy
elsif params[:foo_action] == "update"
  @foo.update_attributes(:params[:foo])
...etc
  • 0
    спасибо за ваш ответ. Нужны ли какие-либо изменения в файле маршрута?
  • 0
    Для варианта б? Очевидно, что вам понадобится запись в вашем файле маршрутов, которая соединяет URL (или часть пути, чтобы быть конкретным) в вопросе с контроллером и действием, о котором идет речь. Возможно, у вас уже есть один, я не знаю.
Показать ещё 3 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню