强参数和嵌套路由 - Rails 4.0

时间:2013-12-13 07:05:49

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

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

  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方法。它吓坏了,说:

  

语法错误,意外')',期待=&gt; (的SyntaxError)

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

1 个答案:

答案 0 :(得分:0)

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

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