为了将项目分配给用户,我的用户模型和项目模型之间存在多对多关系。我现在正试图使用包含编辑用户页面上项目的下拉列表来为实际分配功能。我的代码看起来是这样的,但我似乎不知道如何在点击按钮后将所选值发送回控制器:
<div class="input-group my-2">
<%= collection_select('user', 'project', Project.all, :id, :name, include_blank: true) %>
<div class="input-group-append">
<%= link_to '<div class="btn btn-outline-primary">Toggle access to selected project</div>'.html_safe, toggle_project_access_user_url %>
</div>
</div>
我尝试过使用我发现的JS建议,但我认为我缺少一些关于如何使用这些建议完全实现功能的知识。
在Rails中使用Javascript涵盖了这一点。
使用form_with
可以使用data-remote=true
设置表单。然后照常进行。
form_with url: toggle_project_access_user_url, method: :patch do |f|
f.collection_select(:project_id, Project.all, :id, :name, include_blank: true)
f.submit("Toggle access to selected project")
end
这将向toggle_project_access_user_url发送POST,其中有一个隐藏的_method输入,指示它是PATCH。使用ajax:success
上的挂钩来更新页面。