Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails 3表单,需要更好的设计,可能需要使用ajax_Ruby On Rails_Ajax_Ruby On Rails 3_Form For - Fatal编程技术网

Ruby on rails Rails 3表单,需要更好的设计,可能需要使用ajax

Ruby on rails Rails 3表单,需要更好的设计,可能需要使用ajax,ruby-on-rails,ajax,ruby-on-rails-3,form-for,Ruby On Rails,Ajax,Ruby On Rails 3,Form For,我正在尝试创建一个更新用户角色的页面。我有一个用户控制器和一个名为“admin”的控制器中的方法/操作。管理员定义所做的就是将所有用户存储在@users中。在routes中,资源是users,它有一个集合do,该集合获取:admin 我通过为每个用户创建一个新表单来更新角色,并且在每个用户旁边的每个表单上都有一个保存按钮 <table> <tr> <th>Username</th> <th>Role</th&g

我正在尝试创建一个更新用户角色的页面。我有一个用户控制器和一个名为“admin”的控制器中的方法/操作。管理员定义所做的就是将所有用户存储在@users中。在routes中,资源是users,它有一个集合do,该集合获取:admin

我通过为每个用户创建一个新表单来更新角色,并且在每个用户旁边的每个表单上都有一个保存按钮

<table>
  <tr>
    <th>Username</th>
    <th>Role</th>
    <th>Update</th>
  </tr>
  <% @users.each do |user| %>
    <%= form_for [user],  :user => { :action => "update" } do |f| %>
     <tr>
       <td><%= user.username %></td> 
       <td><%= select("user", "role", options_for_select(['member', 'moderator','admin'], user.role) )%></td>
       <td><%= f.submit %> </td>
     </tr>
    <% end %>
  <% end %>
</table>

用户名
角色
更新
{:action=>“update”}do | f |%>
这可以工作和更新,但不是很直观。我希望在整个事件之后使用submit按钮,或者使用ajax调用在角色发生更改时更新角色,这样用户就不必担心单击“保存”了

有没有办法避免双重嵌套循环,并可能在不需要更新按钮的地方添加ajax


感谢您的建议和帮助。

因此,如果您想使用AJAX,我建议您引入一个类似jQuery的JavaScript库(如果您使用的是大量HTML,可能不是ExtJS)


JQuery内置了AJAX功能。

因此,如果您想走AJAX路线,我建议您引入一个类似JQuery的JavaScript库(如果您使用的是大量HTML,那么可能不是ExtJS)


JQuery内置了AJAX功能。

您可以做的第一件事是将表单更改为使用AJAX进行更新的远程表单。您可以在rails中进行一次更改

{:action=>“update”},:remote=>true do | f |%>

这里的效果是,每个用户的“提交”按钮提交表单更改,而不会使您离开页面

接下来,如果您想完全删除submit按钮并让它在更改时提交,那么可以使用一些非常简单的jQuery来侦听输入字段上的更改,并在发生更改时提交父表单


为所有对象创建一个提交按钮可能更困难。据我所知,您必须将所有对象的字段打印到一个表单中,可能会将表单发送到另一个操作,然后在表单中有更改的所有用户之间循环,并分别调用更新操作。不过,可能有一个更简单的方法

您可以做的第一件事是将表单更改为使用ajax进行更新的远程表单。您可以在rails中进行一次更改

{:action=>“update”},:remote=>true do | f |%>

这里的效果是,每个用户的“提交”按钮提交表单更改,而不会使您离开页面

接下来,如果您想完全删除submit按钮并让它在更改时提交,那么可以使用一些非常简单的jQuery来侦听输入字段上的更改,并在发生更改时提交父表单


为所有对象创建一个提交按钮可能更困难。据我所知,您必须将所有对象的字段打印到一个表单中,可能会将表单发送到另一个操作,然后在表单中有更改的所有用户之间循环,并分别调用更新操作。不过,可能有一个更简单的方法

当我这样做的时候,我似乎无法让路线正常运行。我从终端-ActionController::RoutingError(没有路由匹配项“/users/3”)中得到一个错误。我的控制器中有一个update命令,它以另一种方式工作。看看这是否有帮助:不是真的。我将:url=>users\u路径和:controller=>“users”以及:action=>“update”传递到表单中,用于。。。我的终端为…返回已启动的POST“/用户”。。。设计处理::注册控制器#创建为JS我不确定为什么它会转到注册控制器我这样做时,似乎无法让路线正常工作。我从终端-ActionController::RoutingError(没有路由匹配项“/users/3”)中得到一个错误。我的控制器中有一个update命令,它以另一种方式工作。看看这是否有帮助:不是真的。我将:url=>users\u路径和:controller=>“users”以及:action=>“update”传递到表单中,用于。。。我的终端为…返回已启动的POST“/用户”。。。通过designe::RegistrationController处理#创建为JS我不确定为什么它会转到RegistrationController