2016-01-27 55 views
0

我目前在我的控制器中有這個;渲染後的頁面完全改變,添加了一個調用`render`後

def get_response 
    response = HTTParty.get('url') 
    render json: response.to_json 
    end 

    def edit 
    @newevent = Event.find(params[:id]) 
    json = get_response 

    byebug 
    end 

現在,當我去到編輯頁面,它只是顯示了JSON響應,這是不是我想要的。

我希望通過編輯頁面可以使用該響應。所以我可以打電話給迴應。 ID(目前沒有工作,但就像我說的,我可以回JSON和展現,只是它刪除我的編輯頁面,這是不是我想要的,我想要的編輯頁面內使用的JSON)

+0

你能澄清你的問題嗎?我在那裏看到一個問題:'render json'不需要內容上的'.to_json'。這就是'render json'自動執行的操作。 – wrtsprt

+0

問題是,如果沒有將chang編輯頁面作爲響應,我該如何調用它? – SamAdmit

回答

0

重讀幾遍後,我想我明白了這個問題。

發生了什麼事

我覺得是混淆你是Rails魔術™,這是如此得心應手,但使得超硬初學者,使從使用Rails步驟生成代碼,他們自己的版本,並瞭解爲什麼東西打破。

一個像edit這樣空的控制器動作會執行一個隱式的render <name-of-controller-action>。只要你自己寫了一個實際的render,Rails就不會執行隱含的render。所以你所做的實際上是'覆蓋'Rails的一個。產生你看到你的JSON呈現的結果,而不是編輯頁面了。

如何解決呢

你所要做的是增加額外的內容到您的編輯視圖(您首先從其他網頁獲得)。在幾個層面上使用render錯誤的方法。 (我建議重讀Rails指南,因爲我認爲有些概念還不清楚)。

你想要做的是在現有的編輯視圖(edit.html.erb)建設。您想要在該視圖中的某處添加內容,當然需要在控制器中進行準備,以便視圖可以訪問它。

因此,在您的控制器中,您可能會沿着@website_content = HTTParty.get('url')的方向執行某些操作,這意味着您可以使用@website_content顯示您下載的JSON。