У меня есть приложение Rails со следующим кодом: У меня ClientsController с
class ClientsController < ApplicationController
def new
#GET to /users/:user_id/client/new(.:format)
@client = Client.new
@client2 = Client.new
end
def index
@user = User.find(params[:user_id])
@client = @user.clients
end
def create
@user = User.find(params[:user_id])
#create client linked to this user
@client = @user.clients.build( client_params )
if @client.save
flash[:success] = "Client Updated"
redirect_to root_path
else
render action::new
end
end
def edit
@user = User.find(params[:user_id])
@client = @user.clients
end
private
def client_params
params.require(:client).permit(:clientName, :clientEmail)
end
end
У меня есть файл маршрутов, например:
resources :users do
resource :profile
resources :clients
end
У меня есть пользователь has_one, связанный спрофиль и ассоциация has_many с клиентами.
Я использую Devise для аутентификации.У меня нет отдельного UsersController.
Код в ClientsController отлично работает для добавления, редактирования и обновления профиля, если я заменю @client на @profile.Но код выдает ошибку при выполнении того же действия с клиентами.
Мой edit.html.erb для клиентов
<%= form_for @client, url: user_client_path do |f| %>
<div class="form-group">
<h5>Client's Name</h5>
<%= f.text_field :clientName, class: 'form-control' %>
</div>
<div class="form-group">
<h5>Client Email</h5>
<%= f.text_field :clientEmail, class: 'form-control' %>
</div>
<div class="form-group">
<%= f.submit "Save Profile", class: 'btn btn-primary' %>
</div>
<% end %>
Я получаю сообщение об ошибке
неопределенный метод `to_key 'для Client :: ActiveRecord_Associations_CollectionProxy
Я делаю это в dashboard / index.html.erb
<% @clients.each do |c| %>
<%= link_to "Edit Clients", edit_user_client_path(id: c.id,user_id: current_user.id) %>
<br>
<% end %>
При нажатии на ссылку я получаю http://localhost:3000/users/26/clients/4/edit но тогда я получаю ошибку.