2014-03-13 55 views
0

我调用这个redirect_to的高清制作:redirect_to时不重定向到指定的路径(jQueryMobile/Rails 3中)

class M::TodosController < ApplicationController 
    layout 'm/application' 

    def create 
    @todo = @goal.todos.build(params[:todo]) 
    ... 
    puts "XXXXX => " + m_goal_todo_path(@goal, @todo) 
    redirect_to m_goal_todo_path(@goal, @todo) 
    end 
... 

我检查线路=>耙路线:

m_goal_todo GET /m/goals/:goal_id/todos/:id(.:format)       m/todos#show 

在我的日志:

XXXXX => /m/goals/46/todos/358 


Started POST "/m/goals/46/todos" for 127.0.0.1 at 2014-03-13 13:47:14 +0900 
Processing by M::TodosController#create as */* 
    Parameters: {"todo"=>{"content"=>"23"}, "goal_id"=>"46"} 
    SQL (0.4ms) DELETE FROM "authentication_tokens" WHERE (logged_in_until < '2014-03-13 13:47:14.014105') 
    AuthenticationToken Load (0.5ms) SELECT "authentication_tokens".* FROM "authentication_tokens" WHERE "authentication_tokens"."token" = '5aTg7cWiDXAJj8IHd2NePqat1fNaXc0Nu9kAtS2PF6N8TDR8T5IeZYUZsT4Iy7dkuyy5FkmO_qyDuXX8' LIMIT 1 
... 

&仍然它不重定向到 - > /米/目标/ 46 /待办事项/ 358它里去到/米/目标/ 46/

我使用Rails 3.2.13 & jQueryMobile

+++ UPDATE +++

试图

def create 
    @todo = @goal.todos.build(params[:todo]) 
    ... 
    puts "XXXXX => " + m_goal_todo_path(@goal, @todo) 
    respond_to do |format| 
    format.html { redirect_to m_goal_todo_path(@goal, @todo)} 
    end 
end 

获得相同的行为。

另外,我试图通过添加rel禁用的Ajax = “外部”,没有任何事情改变

<a href="#" class="add center" data-role="button" data-rel="back" data-mini="true" data-inline="true" rel="external">やるべきことを追加</a> 

+++ UPDATE 2 +++

new.html.erb

<div class="center"> 
    <a href="#" class="add center" data-role="button" data-rel="back" data-mini=" true" data-inline="true" data-ajax="false">やるべきことを追加</a> 
</div> 

和javascript

$(document).on('click', '.todos_new_page .add', function() { 
    var $this = $(this); 
    var goalId = $this.closest('.todos_new_page').data('goal-id'); 
    var $content = $this.closest('[data-role=content]').find('#content'); 
    if ($content.val() == "") { 
     alert("記入して下さい"); 
     return false; 
    } 
    var content = $content.val(); 
    $.ajax({ 
     url: '/m/goals/' + goalId + '/todos', 
     type: 'POST', 
     data: {todo: {content: content}}, 
     error: defaultAjaxError 
    }); 
    }); 

回答

0

因为我有这个代码和平 - >data-rel="back"我被重定向到/m/goals/46/todos/358

所以,我删除了:) &添加⬇我Ajax调用

success: function(link) { 
    $.mobile.changePage('/m/'+link.go); 
    } 

其中link.go - >render "/m/goals/_update_goal_html", json: { go: "/goals/" + @goal.id.to_s + "/todos/" + @todo.id.to_s}

工作得很好:)

Babasaheb Gosavi,感谢你的帮助。

1

在Jquery移动视图不会改变,因为它完全基于Ajax。你需要指定这样的事情

def create 
    @todo = @goal.todos.build(params[:todo]) 
    ... 
    puts "XXXXX => " + m_goal_todo_path(@goal, @todo) 
    respond_to do |format| 
    format.html { redirect_to m_goal_todo_path(@goal, @todo)} 
    end 
end 

,或者您需要从那里创建操作禁用阿贾克斯形式使用被称为数据阿贾克斯=“假”

+0

谢谢你的回应。 respond_to do | format | format.html {redirect_to m_goal_todo_path(@goal,@todo)} end 获取相同的行为。 我试图将rel =“外部”禁用阿贾克斯,仍然有同样的行为 やるべきことを追加 whitesiroi

+0

您需要标签 –