【问题标题】:Rails + Angularjs: Passing user_id with JSONRails + Angularjs:使用 JSON 传递 user_id
【发布时间】:2013-09-30 01:14:08
【问题描述】:

我正在使用 Rails 4 (api) 和 Angularjs 构建一个简单的博客应用程序来帮助学习 Angularjs。我已经花了 2 天时间让我的帖子模型与 Angularjs 进行通信。似乎我在尝试将帖子与用户关联时遇到了另一面墙(使用设计)。

我知道,在我构建这个应用程序时,我将使用外键,所以我很想听听其他使用 rails 和 angularjs 构建 SPA 的人的意见。我还尝试将 Angularjs 设置为尽可能接近地模仿 Rails。

如何使用 Angularjs 和 Rails 处理关联?

如何让 Devise 助手(例如 current_useruser_signed_in?)在 Angularjs 模板中工作?

提前谢谢你。

如果您需要,我可以添加更多详细信息。我真的只是不知道去哪里(我是 Rails 和 Angularjs 的新手)

【问题讨论】:

    标签: ruby-on-rails angularjs devise


    【解决方案1】:

    你如何获得设计助手,例如 current_user & 用户签名?在 Angularjs 模板中工作?

    简单的答案是,你不知道。关于这个主题可能有很多哲学争论,但基本上 javascript 不安全,因为用户可以在浏览器中检查所有内容。

    如果您想将帖子与用户关联,最好在 rails 的控制器级别执行此操作。使用current_userPost 上设置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

    【讨论】:

    • 嗨@muttonlamb。这很好用(我可能会坚持使用这种方法),但我很好奇其他人要说什么,所以我想我要再等一会儿才能标记这个答案......快速提问:How would you handle conditional statements? (such as displaying an edit link if the current_user's id matches the post.user_id? 谢谢
    • 您可以通过比较用户 ID 和帖子 ID 在控制器上设置标志,但您仍然需要在控制器中验证它,例如if current_user.id == post.id [some code to save] else [redirect or flash or error] end。所以基本上你只是不在角度视图中显示选项,但如果某些恶意用户发送正确格式的 put 请求,那么它仍然会被控制器拒绝。希望有帮助!
    【解决方案2】:

    这两个存储库就是一个很好的例子:

    a RESTful Rails api

    这个存储库包含一个完整的 RESTful rails-api 以及一个引导开发人员完成所有构建步骤的干净文档。如果你想从 ruby​​ on rails 开始,这个存储库对你来说是一个很好的资源。

    AngularJS front-end for the above api

    这个存储库包含一个完整的 RESTful AngularJs Web 应用程序以及一个干净的文档,该文档引导开发人员完成所有构建步骤。如果你想从 AngularJs 开始,这个存储库对你来说是一个很好的资源。

    【讨论】:

      猜你喜欢
      • 2012-04-04
      • 1970-01-01
      • 1970-01-01
      • 2015-09-08
      • 2015-07-27
      • 2015-05-25
      • 1970-01-01
      • 1970-01-01
      • 2021-01-16
      相关资源
      最近更新 更多