2013-09-30 33 views
0

我正在構建一個簡單的博客應用程序,使用Rails 4(api)& Angularjs來幫助學習Angularjs。我已經花了2天時間才讓我的博文模型與Angularjs進行交流。似乎我已經擊中另一堵牆試圖將帖子與用戶關聯(使用Devise)。Rails + Angularjs:通過JSON傳遞user_id

我知道,當我建立到這個應用程序,我將使用外鍵&,所以我很樂意聽到其他人使用railsangularjs構建SPA。我也嘗試將Angularjs設置爲儘可能接近模仿Rails。

您如何處理使用Angularjs的關聯& Rails?

你如何甚至可以設計助手,如current_user & user_signed_in?在Angularjs模板工作?

預先感謝您。

如果您需要我,我可以添加更多詳細信息。我真的不知道去哪裏的形式在這裏(我在兩個軌道& Angularjs一個新手)

回答

1

你如何甚至可以設計助手,如CURRENT_USER & user_signed_in?在Angularjs模板中工作?

簡單的答案是,你沒有。關於這個問題可能會有很多哲學爭論,但是本質上來說javascript並不安全,因爲所有內容都可供用戶在瀏覽器中檢查。

如果要將帖子與用戶相關聯,最好在軌道中的控制器級別執行此操作。使用current_user在您的Post(或任何您想要關聯它的方式)上設置user_id字段。

我不在我的Angular應用程序中放置任何'安全'功能。

下面是我如何在我的一個應用程序中將用戶組織與旅程關聯的示例。

def create 
    @journey = Journey.new(params[:journey]) 
    @journey.organisation = current_user.organisation 
    if @journey.save 
     render json: @journey 
    else 
     head :error 
    end 
end 

哦,也是在你的API :: PostsController,你需要調用before_filter :authenticate_user!能夠使用current_user

+0

嗨@muttonlamb。這很好(我可能會堅持使用這種方法),但我很好奇別人有什麼要說的,所以我想我會稍微等一會兒,然後再標記這個答案...快速問題:'你會如何處理條件陳述? (例如,如果current_user的id與post.user_id相匹配,則顯示編輯鏈接?Thanks – goo

+0

您可以通過比較用戶ID和帖子ID來在控制器上設置一個標誌,但是您仍然需要在控制器中驗證它,例如'如果current_user.id == post.id [一些代碼保存] else [重定向或flash或錯誤]結束'。所以基本上你只是不顯示在角度視圖中的選項,但如果一些惡意用戶發送一個正確的形成把請求,然後它仍然會被控制器拒絕。希望有幫助! – muttonlamb

0

這兩個庫是一個很好的例子:

a RESTful Rails api

此存儲庫包含一個完整的REST風格的rails-api以及一份乾淨的文檔,可以讓開發人員通過所有構建步驟。如果你想從軌道上開始使用ruby,這個倉庫對你來說是一個很好的資源。

AngularJS front-end for the above api

這個軟件庫包含乾淨的文件,其通過所有施工步驟走開發商沿着一個完整的RESTful AngularJs Web應用程序。如果你想從AngularJs開始,這個倉庫對你來說是一個很好的資源。