我不知道这在轨道中是如何工作的,但是我设置了这样的路线:
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的方式??
答案 0 :(得分:0)
您需要更改传递给permit
的参数的顺序以修复语法错误:
def create_new_api_key
params.require(:api_key).permit(:api_key, user_attributes: [:id])
end