在表单提交时将 Javascript 数组发送到 ruby 控制器
Sending Javascript array to ruby controller on form submit
我有一个带有提交按钮的表单<%= f.submit "Create Meeting", class: "btn-submit" %>
该按钮将收集到的信息发送到事件控制器中的events#create
操作。
我希望能够在提交表单中的其余信息的同时将 javascript/JQuery 数组idList
发送到控制器操作。我将如何做到这一点?我知道它涉及一个 AJAX 函数,但我不知道什么时候调用它。我必须覆盖Javascript中的提交函数吗?如果是这样,如何完成?
以下是我创建表单的方式:
<%= form_for(@newevent) do |f| %>
...
<%= f.submit "Create Meeting", class: "btn-submit" %>
<% end %>
这是我提交的控制器操作:
def create
@calendar = current_customer.calendar
@newevent = @calendar.events.build(event_params)
if @newevent.save
redirect_to '/main' #'/main/#{@calendar.id}'
else
redirect_to '/compose'
end
end
任何帮助将不胜感激,谢谢
编辑:这是关于我的数组的javascript。当用户从集合中选择人员选择"同事选择"时,所选人员的 id 将添加到数组中。用户也可以通过另一个点击操作来删除该 id。
var idList = []; //this is the array of entry ids
$(function (){
$("#click-me").click(function (e){
e.preventDefault();
i++;
var list = $("#list");
var name = $("#colleague-select option:selected").text();
var id = $("#colleague-select").val();
var remove = "<button type='button' class='remove-me'> X </button>";
var entry = $("<li>" + name + remove+ "</li>").attr('id',id); //creates entry as JQuery object and sets its id attribute
list.append(entry); //adds entry to HTML element 'list'
idList.push(id); //adds id to array which should be the same as entry's id
return false;
});
});
$(document).on('click', ".remove-me", function(){
var entry = $(this).parent();
var id = entry.attr("id"); //gets value of attribute "id".
entry.remove();
var index = idList.indexOf(id); //finds the index number of id within array
idList.splice(index,1); //removes id from array
});
根据要发送的 ID,您可以使用存储 ID 的隐藏字段:
<%= form_for(@newevent) do |f| %>
# ...
<%= hidden_field_tag 'some_ids[]', [1,2,3], id: 'extra_ids' %>
<%= f.submit "Create Meeting", class: "btn-submit" %>
<% end %>
然后收集params
中的 ID:
def create
some_ids = params[:some_ids]
# ...
end
要使用 Javascript 进行设置:
$(function (){
$("#click-me").click(function (e){
# [...]
idList.push(id); //adds id to array which should be the same as entry's id
$('#extra_ids').val(idList);
return false;
});
});
$(document).on('click', ".remove-me", function(){
# [...]
idList.splice(index,1); //removes id from array
$('#extra_ids').val(idList);
});
相关文章:
- 在指令控制器中使用$attrs时出现问题
- 有没有任何方法可以将控制器从文件加载到ui路由器$stateProvider中
- 从控制器返回后Ajax启动事件激发
- 获取@ResponseBody的一部分作为主干和Spring MVC控制器之间的参数
- 如何在单击复选框后调用控制器方法
- 使用ajax向ruby控制器发送数据
- 用javascript调用函数fron-ruby控制器
- 在表单提交时将 Javascript 数组发送到 ruby 控制器
- 将 JavaScript 变量传递给 ruby-on-rails 控制器
- Ruby on rails:如何从登录弹出窗口向rails控制器发送AJAX请求以及用户给定的凭据
- 将javascript中的一个变量传递给ruby控制器
- 如何使用AJAX监控ruby控制器传递到视图html的实例变量
- Ruby on rails-如何让控制器使用ajax同时执行两个操作
- Ruby on Rails jQuery未调用正确的控制器操作
- 从ROR控制器ruby调用javascript函数
- 我如何通过Ajax提交表单数据到我的Ruby控制器
- 在我的ruby控制器函数中刷新网页
- 动态构建JSON变量从HTML5移动发送到Ruby on Rails控制器
- 从控制器Ruby on Rails 3.2.9调用javascript
- 如何在Ruby on Rails中将更新的javascript变量传递到表单到控制器