【发布时间】:2014-05-05 15:32:23
【问题描述】:
我最近几天正在创建一个项目。它是一个任务分配项目给 Rails 4 中的员工。在这个项目中,管理员可以更改任务的顺序。为此,我使用 jquery ui sortable。因此,当管理员按特定顺序拖动任务时,将向 rails 控制器发送 ajax 请求。我可以在哪里获得可排序元素的位置。我可以将它保存到数据库。但无法呈现到 html 页面。
我的 Html 文件
<% content_for :head do %>
<script>
$(function() {
$( "#sortable" ).sortable({
revert: true,
stop: function(event,ui){
var datas = {
top: ui.position["top"],
left: ui.position["left"]
};
$.ajax({
type: "POST",
url: '/task/position',
data: datas,
success: function(data){
console.log(data);
},
dataType: 'json'
});
}
});
$( "#draggable" ).draggable({
connectToSortable: "#sortable",
opacity: 0.35,
helper: "clone",
revert: "invalid"
});
$( "ul, li" ).disableSelection();
});
</script>
<% end %>
<% @page_title = 'Tasks' %>
<% if !flash[:notice].blank? %>
<div class="notice">
<%= flash[:notice] %>
</div>
<% end %>
<div class="big">
<%= @top %>
<strong>Task Assigned</strong>
<ul id="sortable">
<% @tasks.each do |task| %>
<li>
<%= link_to(task.task_name,{:action => 'show',:id => task.id}) %>
</li>
<% end %>
</ul>
</div>
我的控制器看起来像这样
def position
@top = params[:top]
value = {
:top => @top,
:test => "hiuhiuh",
}
respond_to do |format|
format.html
format.json { render json: value}
end
end
我的疑问是我可以直接在 html 页面中访问变量@top。我试过但不能。但是 json 响应有数据,因为我正在通过它传递它。我可以直接在 之类的 html 页面。
我还需要一个逻辑来保存位置,所以浏览器刷新并没有刷新可排序元素的位置。
【问题讨论】:
标签: ruby-on-rails ajax jquery-ui ruby-on-rails-4