Сейчас я создаю приложение управления проектами в рельсах, вот некоторая справочная информация:
На данный момент у меня есть 2 модели, одна из которых является пользовательской, а другая - клиентской. Клиенты и пользователи имеют отношение один-к-одному (клиент -> has_one и пользователь -> own_to, что означает, что внешний ключ находится в таблице пользователей)
Итак, что я пытаюсь сделать, это когда вы добавляете клиента, вы можете фактически добавить учетные данные (добавить пользователя) к этому клиенту, для этого все клиенты отображаются со ссылкой рядом с именем этого клиента Это означает, что вы действительно можете создать учетные данные для этого клиента.
Итак, для этого я использую вспомогательную ссылку, как этот.
<%= link_to "Credentials",
{:controller => 'user', :action => 'new', :client_id => client.id} %>
То есть он будет построен следующим образом:
http://localhost:3000/clients/2/user/new
Путем создания пользователя для клиента с идентификатором 2. 2. 1013 *
И затем захватывает информацию в контроллер следующим образом:
@user = User.new(:client_id => params[:client_id])
РЕДАКТИРОВАТЬ: Это то, что у меня сейчас есть в моем виде / контроллере и маршрутах
Я получаю эту ошибку: нет маршрута "/ clients // user" с {: method =>: post}
Маршруты
ActionController::Routing::Routes.draw do |map|
map.resources :users
map.resources :clients, :has_one => :user
map.connect ':controller/:action/:id'
map.connect ':controller/:action/:id.:format'
end
Контроллер
class UsersController < ApplicationController
before_filter :load_client
def new
@user = User.new
@client = Client.new
end
def load_client
@client = Client.find(params[:client_id])
end
def create
@user = User.new(params[:user])
@user.client_id = @client.id
if @user.save
flash[:notice] = "Credentials created"
render :new
else
flash[:error] = "Credentials created failed"
render :new
end
end
View
<% form_for @user, :url => client_user_url(@client) do |f| %>
<p>
<%= f.label :login, "Username" %>
<%= f.text_field :login %>
</p>
<p>
<%= f.label :password, "Password" %>
<%= f.password_field :password %>
</p>
<p>
<%= f.label :password_confirmation, "Password Confirmation" %>
<%= f.password_field :password_confirmation %>
</p>
<%= f.submit "Create", :disable_with => 'Please Wait...' %>
<% end %>