我遇到需要进行ajax调用并将数据发布到控制器的情况。由于它是自定义提交,因此控制器中无法访问正常的参数。因此,当我想保存数据时,我没有我想要的ID。
我的网址就像这样localhost/events/2/roster/1
我的控制器中需要2和1,所以我可以操作这些记录。我考虑使用
在页面上执行类似隐藏输入字段的操作<%= @event.id %>
<%= @roster.id %>
然后将价值提取到coffeescript中,但这让我感到畏缩。
有没有更好的方法来访问控制器中的这些数据?
你能通过ajax将正常参数传递给控制器吗?
感谢您的投入。
修改 通常,当您执行表单提交时,如form_for,您将获得包含对象ID的params,其中包含您的数据。当我执行我的ajax POST时,我无法使用id字段。
通过自定义提交,我的意思是它的AJAX帖子与表单提交。
编辑2 路线:
resources :events do
resources :rosters
end
post 'rosters/validate'
谢谢,
答案 0 :(得分:1)
鉴于您的路由/控制器没有ID信息,是的,您需要通过POST请求传递ID。
具有所需ID的隐藏输入字段是一种方法,另一种可能是嵌入<script>
标记,您可以将值直接注入JavaScript。即
<script>
window.event_id = <%= @event.id %>;
window.roster_id = <%= @roster.id %>;
</script>
然后将它们添加到POST有效负载中。如果您已经拥有通过AJAX提交的表单,则使用隐藏的输入字段是有意义的。