【问题标题】:Jquery ui Ajax in rails 4Rails 4中的Jquery ui Ajax
【发布时间】: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


    【解决方案1】:

    是的,在您的 html 视图中,您可以直接引用您在控制器中设置的 @top 变量。

    【讨论】:

    • 但是当我在 html 页面中调用它时没有显示任何内容。
    • 检查您的 ajax 参数,并确保请求未使用 json 作为类型(相对于 html),否则您的控制器将呈现该对象的 json 序列化版本。如果您选择坚持使用 json,只需在客户端 (js) 上解析它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-11-16
    • 1970-01-01
    • 2014-02-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多