【问题标题】:Strong parameters and Nested Routes - Rails 4.0强参数和嵌套路由 - Rails 4.0
【发布时间】:2013-12-13 07:05:48
【问题描述】:

我不知道这在 Rails 中是如何工作的,但我设置了这样的路线:

  resources :users do
    resources :api_keys
  end

(用户has_many: api_keys,api_key belongs_to: user

然后我(因为我只关心 API 密钥)创建了以下控制器:

class ApiKeysController < ApplicationController
    before_action :authenticate_user!

    def index
        @user = User.find(params[:user_id])
        @api_key = User.apikeys
    end

    def create
        @user = User.find(params[:user_id])
        @api_key = ApiKey.new(create_new_api_key)
        create_api_key(@api_key, @user)
    end

    def destroy
        destroy_api_key
    end

    private

    def create_new_api_key
        params.require(:api_key).permit(user_attributes: [:id],  :api_key)
    end

end

其中规定,在每次操作之前对用户进行身份验证,索引会根据用户 ID 获取所有 api 密钥。 create 假设基于用户 id 创建一个 api 密钥,(注意: create_api_key(@api_key, @user) 只是一个抽象方法,说明 - 如果我们保存,重定向到 user_path 并发送一条消息,如果我们失败,返回用户路径并显示错误消息)

然后销毁,好吧,它只是找到一个 api 密钥,销毁它并重定向(再次使用抽象)。

有什么问题?

create_new_api_key 方法。它吓坏了,说:

语法错误,意外 ')',期待 => (SyntaxError)

我以为这就是我传递用户 ID 的方式??

【问题讨论】:

    标签: ruby ruby-on-rails-4 strong-parameters nested-routes


    【解决方案1】:

    您需要更改传入permit的参数的顺序以修复语法错误:

    def create_new_api_key
        params.require(:api_key).permit(:api_key, user_attributes: [:id])
    end
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-09-20
      • 2016-04-16
      • 1970-01-01
      • 2013-01-07
      • 2013-10-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多