我有一個使用angularjs的rails應用程序。在這裏我試圖從軌道控制器呈現模板並將資源傳遞給模板。但是用於顯示變量的ruby代碼與html.erb視圖中顯示的完全相同。ruby代碼在模板中顯示爲html
def fail
@order = Order.find(1)
render 'payments/fail'
end
鑑於
<%= @order.as_json %>
我有一個使用angularjs的rails應用程序。在這裏我試圖從軌道控制器呈現模板並將資源傳遞給模板。但是用於顯示變量的ruby代碼與html.erb視圖中顯示的完全相同。ruby代碼在模板中顯示爲html
def fail
@order = Order.find(1)
render 'payments/fail'
end
鑑於
<%= @order.as_json %>
我的猜測是,這個問題是在您的視圖文件的名稱。我想你會把它命名爲fail.html
而不是fail.html.erb
。如果沒有.erb後綴,Rails會將該文件解釋爲html文本,並在不解釋ruby代碼的情況下呈現它。
但是,更改文件名並不是正確的解決方案。既然你想渲染json而不是HTML,你不需要創建視圖模板,所以你應該完全刪除模板文件。
所有Rails的模型自動的有一個.as_json方法,所以你可以簡單地修改你的控制器的失敗就像方法,以便:
def fail
@order = Order.find(1)
render json: @order.as_json
end
此外,如果你想要做一些花哨和修改返回的JSON,你可以在模型中定義自己的as_json
方法。
這是'payments/_fail.html.erb'的全部內容嗎? –