2012-07-21 72 views
1

我有一個鏈接,使用戶能夠權利要求中我的應用程序虛構的位置,經由鏈路Rails控制器操作可以處理html和javascript請求嗎?

<%= link_to("Claim this location!", loc_claim_path(@loc.id), :id => "loc_claim") %> 

它將該請求路由通過我的權利要求的控制器,像這樣:

def claim 

    @loc = Location.find(params[:loc_id]) 

    if [email protected] 
     flash[:notice] = "You need to be logged in to claim a location!" 
     redirect_to(@loc) 
    else 
     flash[:notice] = "Location claimed!" 
     render("claim.js") 
    end 

end 

如果用戶ISN登錄(即@user爲false),它將它們重定向回位置頁面。

但是,如果用戶已登錄,則需要觸發javascript claim.js,然後在完成後重定向回位置頁面。

我的問題是,如果設置:remote => true,它將啓動javascript,但不是html,反之亦然,當我沒有設置:remote時。

有沒有辦法讓我擁有兩全其美?或者,除此之外,是否有更好的方法來設置?

回答

0

發現,對於我工作的解決方案。

我設置:上的link_to,其發送一個JS請求到權利要求的控制器,其中,我使用

render js: "window.location.pathname='/locations/#{@location.id}'" 

哪完成同樣的事情作爲redirect_to的(@loc)

遠程=>真

然後,我只是提出正常的claim.js請求,即

render "claim" 
2

是的,你可以用respond_to代碼塊

respond_to do |format| 
    format.html 
    format.js 
    end 

爲了測試做這個嘗試禁用JavaScript和確保的HTML路徑工程

+0

我也試過這個。然而,它不斷嘗試將claim.js呈現爲html頁面並鎖定... – 2012-07-21 23:30:29

+0

爲了澄清,我沒有構建控制器來處理html和javascript請求。 我希望我的控制器在某些情況下將html請求呈現爲html,並在其他情況下將其呈現爲javascript。 – 2012-07-22 00:27:14

相關問題