Rails 3.2.1-将Javascript变量/数据获取到Rails控制器
我正在开发一个Rails 3.2.1-将Javascript变量/数据获取到Rails控制器,javascript,jquery,ruby-on-rails,ruby,web-applications,Javascript,Jquery,Ruby On Rails,Ruby,Web Applications,我正在开发一个rails3.2.1app,希望将一些Javascript变量传递给Rails控制器。以下是一些更详细的信息: 我的小提琴: fiddle没有显示的是jQuery UI可排序:$(“#菜单项”).sortable() 我想在ThingsController中的Rails“execute”方法中为每个项目处理以下信息: 项目是否可见(我想我应该做一些类似$('#item_1)。是(':visible')) 显示以下哪一项-“添加”、“减少”或两者都不显示 项目的id 项目在可排序列表
rails3.2.1
app,希望将一些Javascript变量传递给Rails控制器。以下是一些更详细的信息:
我的小提琴:
fiddle没有显示的是jQuery UI可排序:$(“#菜单项”).sortable()代码>
我想在ThingsController中的Rails“execute”方法中为每个项目处理以下信息:
项目是否可见(我想我应该做一些类似$('#item_1)。是(':visible'))
显示以下哪一项-“添加”、“减少”或两者都不显示
项目的id
项目在可排序列表中的顺序/位置
我的做法是将包含上述数据的AJAX发送到“things/execute”操作,并以某种方式将其路由并响应传入的AJAX
我隐约知道一些零碎的东西应该是什么样子,但我很难把所有的东西都放在一起。我真的很感谢你的帮助!所以,你需要解析你的HTML来从中获取信息
范例
HTML:
<div id="my_content">
<div id="div1" class="reduce" style="visibility: visible;"></div>
<div id="div2" class="add" style="visibility: visible;"></div>
<div id="div3" class="add" style="visibility: visible;"></div>
<div id="div4" class="reduce" style="visibility: visible;"></div>
<div id="div5" class="reduce" style="visibility: hidden;"></div>
<div id="div6" class="add" style="visibility: hidden;"></div>
<div id="div7" class="add" style="visibility: hidden;"></div>
<div id="div8" class="reduce" style="visibility: hidden;"></div>
</div>
var parsed_data = {}
var order = 1
$('#my_content > div').each(function() {
// Some if else
var element_class = $(this).hasClass('reduce') ? 'reduce' :
( $(this).hasClass('add') ? 'add' : 'unkown')
parsed_data['data'+ order] = {
element_id: $(this).attr('id'),
display_class: element_class,
visibility: $(this).css('visibility'),
}
order++
})
def your_controller_function
params.each do |key, div|
print "DIV N°#{key}"
print " Id #{element_id}"
print " Displayed class #{display_class}"
print " Visibility #{visibility}"
end
end
然后使用AJAX调用控制器:
$.ajax({
url: "<CONTROLLER_URL>",
type: "POST",
dataType: 'json', // data returned, not data sent
data: parsed_data
}).done(function(data) {
console.log('Done')
})
我希望它不会太凌乱,而且会有所帮助。另一方面,请在将其发布到internet站点之前升级到最新的3.2.x版本,否则它将被黑客攻击。