Есть много таких, особенно для Rails 4.0 и Rails 3.x. Я новичок в вложенной маршрутизации, и мне это очень сложно, особенно с формами.Первый аргумент в форме не может содержать nil или быть пустым в рельсах. 4.0
Так у меня есть следующие:
Маршруты
resources :users do
resources :api_keys, path: '/developmentcenter'
end
Отношения здесь: пользователь имеет много ключей API, где ключ апи принадлежит пользователю.
Контроллер
class ApiKeysController < ApplicationController
before_action :authenticate_user!
def new
@user = User.find(params[:user_id])
@api_key = ApiKey.new(:user => @user)
end
def index
@user = User.find(params[:user_id])
@api_key = @user.api_keys
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
@user = User.find(params[:user_id])
destroy_api_key(@user)
end
private
def create_new_api_key
params.permit(:api_key, user_attributes: [:id])
end
end
выше довольно простой. create_api_key
- это метод, который что-то делает для сохранения или делает что-то еще при неспособности сохранить. Пока destroy_api_key
Просто найдите ключ api на основе идентификатора пользователя и удалите его, что-то с успехом и что-то при ошибке.
Теперь давайте создадим форму - которая имеет одну кнопку для создания ключа API.
<h2>Create a new Key</h2>
<%= form_for ([@user, @api_keys]) do |f| %>
<p class="button"><%= f.submit "Generate API Key" %></p>
<% end %>
Все, что нам нужно, это кнопка одного представить, что после щелчка, создает новый ключ API для пользователя, которого вошедшего в
Но ждать у нас есть ошибка:.
First argument in form cannot contain nil or be empty
Эта ошибка происходит при:
<%= form_for ([@user, @api_keys]) do |f| %>
Так что - я посмотрел на каждый из вопросов стека (а большинство), которые касаются этой ошибки, я изменил свой контроллер на основе нескольких, на то, что вы видите выше. Я даже смотрю на документы справки формы в руководстве по рельсам.
Я не могу понять это.