2009-06-20 53 views
0

我遇到了嚴重的Rails,Javascript和重定向問題。基本上,如果JS被禁用,我有「重定向到不同頁面的」簡單「問題。如果啓用了JS,那麼我立即添加一個新的內容 - 這就像一個魅力。但是,如果JS被禁用,我想重定向到另一個控制器的NEW頁面。基本上模型設置是這樣的:(Ruby,Rails,Javascript)Javascript禁用時重定向/渲染不同的頁面...?

Site -> Buildings -> Controllers (not to be confused with Rails "controllers") 

我有一個「SiteManagerController」,它使用JS來管理整個事情。基本上我有一個場景,我試圖做到以下幾點:

1)如果JS啓用我想添加項目內聯 2)如果JS被禁用,我希望呈現「:controller => buildings ,:action => new「

我的」link_to_remote「很簡單。正如我所說,它適用於JS。我的軌控制器代碼如下:

高清add_building @building = Building.new @ building.name = 「無題」 @ building.site_id =參數[:編號] @ building.save 的respond_to做|格式| format.html {redirect_to的:控制器=> 「建築物」,:動作=> 「新」} format.js 端 端

這不起作用。對於什麼是值得的,當查看頁面源代碼時,沒有任何跡象表明,當JS被啓用vs禁用時,任何東西都是不同的。所有鏈接看起來都一樣 - 即Ajaxy。

我知道這不應該是這個複雜的問題,但我很難過。

最好。

P.S.請不要更改這篇文章的標題。 ;)

+0

您可以將所有的東西@building減少`Building.create({:名稱=>「無題」,: site_id => params [:id]})`。 :) – epochwolf 2009-06-20 00:23:53

+0

是的,這是嘗試儘可能詳細的aaaaaall剩菜。不過謝謝。 – 2009-06-20 01:03:20

回答

0

提到的link_to_remote解決方案可能會工作,但如果你正在尋找一個不顯眼的方式做到這一點,你可以使用一些JavaScript(jQuery的)是這樣的:在您的.html.erb文件

<%=link_to "New Building", new_building_path, :id => 'new_building_link' %> 
JavaScript文件

$(document).load(function() { 
    $("#new_building_link").click(function() { 
    $.ajax({ 
     type:  "POST", # or whatever http method you need 
     url:  "/buildings/add_building", 
     dataType: "script" 
    }); 
    return false; 
    }); 
}); 

然後返回一些JS將更新要更改的頁面區域。

我敢肯定有一個類似的方法來做到這一點與原型,默認的JS庫的軌道,但我不知道原型。

另外請注意,這使用平穩路線(new_building_path,而不是指定控制器和操作)。這是現在的首選方法;您只需要將'map.resources:buildings'添加到routes.rb。有幾條關於寧靜路線的Railscasts,如果你有9美元可以放棄Peepcode。

如前所述,你可以縮小你的建築創作的代碼中的註釋的一個使用: Building.create({:name => "Untitled", :site_id => params[:id]})

0

我相信解決方案在於「link_to_remote」,而不是任何特定的控制器。以下似乎工作:

 <div><%=link_to_remote "NEW BUILDING", {:url => {:action => "add_building", :id => site.id}}, 
      {:href => url_for(:controller => "buildings",:action => "new")}%></div> 

如果你們有更好的建議,無論如何發佈。再次感謝。

0

您是否嘗試過寫入表單以便重定向到另一個頁面,然後當頁面加載時用jjs-y js覆蓋寫入該頁面時會觸發一些js?這樣,如果js被禁用,頁面將按照預期重定向。

+0

我不確定這是從正確的方向接近它。基本上想象一個網絡「GUI」,您可以在其中添加和刪除項目。如果啓用了JS,我只想點擊添加鏈接,並出現一個新的「空白」項目。但是,如果JS被禁用,我想轉到該項目的NEW頁面。我之後去的表單並不關心atm - 儘管我最終會重定向回原始頁面。 – 2009-06-20 01:25:06