我查看了 common / roles / index.html.erb ,我可以点击非用户名,打开特定用户角色进行编辑操作:
<ul class="users">
<% @companies.each do |company| %>
<% company.users.each do |user| %>
<% for role in user.roles %>
<li><%= link_to user.name, edit_common_role_path(role.id) %></li>
<% end %>
<% end %>
<% end %>
</ul>
属于current_user公司的所有用户都可以找到用户。用户ID放在“user_id”列中的角色表中。
在我的controllers / common / roles_controller.rb中,我有这个:
def index
@roles = current_user.roles
if @roles.any? { |role| role.viewer_rights? || role.editer_rights? ||
role.creater_rights? || role.deleter_rights? }
@viewer_editer_creater_deleter = true
else redirect_to errors_path
end
@companies = current_user.companies.includes(:users)
end
def edit
@roles = current_user.roles
if @roles.any? { |role| role.editer_rights? || role.creater_rights? || role.deleter_rights? }
@editer_creater_deleter = true
else redirect_to errors_path
end
@companies = current_user.companies.includes(:users)
@roles = Role.find(params[:id])
end
如何创建下拉菜单,当选择特定用户时,编辑操作的用户角色信息会在下拉菜单中加载?从那里我需要能够执行更新操作用“提交”按钮。不重新加载页面就可以做到这一点。谢谢你的帮助!
更新
我在视图中创建了这个,这让我可以选择用户的下拉列表:
<% @companies.each do |company| %>
<% company.users.each do |user| %>
<option value="<%= user.id %>"><%= user.name %></option>
<% end %>
<% end %>
现在我需要添加一些功能,这些功能可以选择引导来编辑特定用户角色的页面。一个选项可以是在此视图中为特定用户加载角色信息,然后使用“提交”按钮保存更改。
答案 0 :(得分:0)
没有JQuery,您可以实现类似的功能。
在你的路线中,
get '/edit_common_role', to: 'common_roles#edit'
在视图中,
<% @companies.each do |company| %>
<% company.users.each do |user| %>
<%= form_tag '/edit_common_role', method: :get do %>
<%= select_tag :id, options_from_collection_for_select(user.roles, 'id', 'name') %>
<%= submit_tag "Go" %>
<% end %>
<% end %>
<% end %>
我假设你的角色模型有name
方法,因此在collection_from_select中添加了name
。您可以将其更改为您想要的任何内容。
将选择id,对于每个id,您将获得不同公共角色对象的编辑页面。
答案 1 :(得分:0)
我想我已经解决了我的第一个问题:)这里的代码似乎对我有用:
<div class="form-group">
<label class="col-sm-2 control-label">User name</label>
<div class="col-sm-10"><select class="form-control m-b" name="users" id="user_list">
<option value="">Please, select user</option>
<% @companies.each do |company| %>
<% company.users.each do |user| %>
<% for role in user.roles %>
<option value="<%= user.id %>" data-edit-url="<%= edit_common_role_path(role.id) %>"><%= user.name %></option>
<script type="text/javascript">
$('#user_list').change(function() {
window.location = $(this).find(":selected").data('edit-url');
});
</script>
<% end %>
<% end %>
<% end %>
</select>
</div>
</div>
如果我可以优化或做更好的事情,请评论!