我不希望参数显示在url中。因此一个选项
<%= link_to mem, edit_group_member_groups_path(:grp_mem => mem)%>
不适合我。
到目前为止,我已通过以下方式保存了浏览器Cookie中的参数:
<script>
$( function() {
$(".grp_member").on("click", function(e) {
$.cookie("grp_mem",$(this).attr("grp_mem"),{ path: '/' });
});
})
</script>
<%= link_to mem, edit_group_member_groups_path, :grp_mem => mem, :class => "grp_member" %>
但是每个人都可以修改浏览器cookie并获取不允许的信息。
所以,我的下一个想法是在会话中保存参数。但是,我不知道如何在没有url的情况下将参数传递给session。是否可以使用javascipt?如果有,怎么样?或者还有其他选择吗? 提前谢谢。
答案 0 :(得分:0)
你不能把东西放在客户端的会话中。即使你使用cookie作为会话存储(顺便说一下这是默认的),因为Rails会验证会话cookie。
在会话中放置大量内容并不是一种好的做法,因为它可以增加您的请求大小(因为会话cookie是在每次请求时发送的)。正如评论中提到的那样,您可以使用表格。 Rails为此提供了一个方便的包装器:button_to
。
您可以将其用作link_to
<%= button_to mem, { action: :edit, controller: :member_groups },
{ :class => "grp_member", params: { grp_mem: mem } } %>
或者
<%= button_to mem, edit_group_member_groups_path,
{ :class => "grp_member", params: { grp_mem: mem } } %>
您必须确保edit
操作可以处理POST
请求,并且不需要任何网址路径参数。
您可以根据this pull request指定额外的参数。