我在ROR中非常新鲜,在我的应用程序中我有role
模型。现在在它的索引页面上,我将下拉列表放在顶部,这样用户就可以选择特定角色并通过选择dopdown list选项相应地执行操作,并在单击提交时应该执行该操作。我不希望通过link_to
做到这一点,任何人都可以向我解释我需要执行哪些步骤。我知道它可以由Jquery执行,但我也很差。
为了您的理解,我上传了一个屏幕截图
我看过这个Rubyforum,StackOverflow但仍然无法理解。我很感激,如果有人能够一步一步地详细解释我......或者为我提供更好,更轻松的资源。我无法理解从哪里开始?
一些代码:
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
操作
答案 0 :(得分:1)
不使用javascript,您无法从选择中更改操作。该操作由表单提交调用的url确定,而表单提交又在表单的action
属性中指定。选择或任何其他表单输入可以做的就是更改提交到该URL的参数。
但这并不意味着一切都会丢失:这意味着您需要
a)当选择更改
时,使用javascript更改表单的action
属性
b)更改您的控制器代码,以便表单提交到单个固定网址,但控制器中的操作会根据参数执行不同的操作。像
这样的东西#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