Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/63.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails [POST][Ruby on Rails]上的路由错误_Ruby On Rails_Ruby_Controller_Routes_Nested Routes - Fatal编程技术网

Ruby on rails [POST][Ruby on Rails]上的路由错误

Ruby on rails [POST][Ruby on Rails]上的路由错误,ruby-on-rails,ruby,controller,routes,nested-routes,Ruby On Rails,Ruby,Controller,Routes,Nested Routes,现在,我正在rails中构建一个项目管理应用程序,以下是一些背景信息: 现在我有两个模型,一个是用户模型,另一个是客户端模型。客户机和用户有一对一的关系(客户机->有一个和用户->所属,这意味着它在用户表中的外键) 所以我想做的是,一旦你添加了一个客户端,你就可以向该客户端添加凭据(添加用户),为了做到这一点,所有客户端都会在该客户端名称旁边显示一个链接,这意味着你可以为该客户端创建凭据 因此,为了做到这一点,我使用了一个助手链接到像这样的助手 <%= link_to "Credentia

现在,我正在rails中构建一个项目管理应用程序,以下是一些背景信息:

现在我有两个模型,一个是用户模型,另一个是客户端模型。客户机和用户有一对一的关系(客户机->有一个和用户->所属,这意味着它在用户表中的外键)

所以我想做的是,一旦你添加了一个客户端,你就可以向该客户端添加凭据(添加用户),为了做到这一点,所有客户端都会在该客户端名称旁边显示一个链接,这意味着你可以为该客户端创建凭据

因此,为了做到这一点,我使用了一个助手链接到像这样的助手

<%= link_to "Credentials", 
        {:controller => 'user', :action => 'new', :client_id => client.id} %>
通过为客户端创建ID为2的用户

然后像这样将信息捕获到控制器中:

http://localhost:3000/clients/2/user/new
@user = User.new(:client_id => params[:client_id])
编辑:这是我当前在视图/控制器和路由中的内容

我一直遇到这样的错误:没有路由匹配“/clients//user”与{:method=>:post}

路线 控制器
class UsersController
看法
client_user_url(@client)do|f|%>

“请稍候…”%>
您的表单标签错误,您在向
/users
发布时没有
:client\u id

试试这个:

<% form_for @user, :url => {:controller => 'users', :action => 'new', :client_id => @client.id} do |f| >
控制器

class UsersController < ApplicationController
  before_filter :load_client

  def load_client
    @client = Client.find(params[:client_id])
  end

  # Your stuff here
end
class UsersController
查看

<% form_for [@client, @user] do |f| %>

我在创建客户机时使用嵌套属性解决了这个问题,包括用户模型。而且它工作得完美无瑕

如果你们中有人需要更多信息,以下是帮助我提出as解决方案的两个屏幕广播:


你能发布你的整个动作吗?你能展示一下你的用户模型吗?我添加了模型、视图和控制器。你在哪里分配另一个
用户的信息?它通过@User=User.new传递的所有信息(:client\u id=>params[:client\u id])看看控制台的输出:client_id根本没有输出。我尝试了第一个响应,它声称@client对象是空的。我也试了第二个,但还是不行。(我在用户和控制器的新方法中添加了@client=client.new)。顺便说一句,我的路线图中也有这个。参考资料:clients,:has_one=>:user这和你说的不一样吗?没错。您还需要将客户端加载到控制器中的某个位置。我已经编辑了答案并添加了一个示例。如果这听起来很愚蠢,我很抱歉,但是我现在得到了一个“未定义的#的方法`客户端_用户_路径'错误。哦,是的,:has _one使其成为单例资源。这应该是可行的:client\u user\u path(@client)%>即使我检查了我的路由并且我有“post/clients/:client\u id/user(:format){:action=>“create”,:controller=>“users”},我仍然会得到一个带有{:method=>:post}的“No route matches”/clients//user”
<% form_for @user, :url => {:controller => 'users', :action => 'new', :client_id => @client.id} do |f| >
map.resources :clients do |clients|
  clients.resources :users
end
class UsersController < ApplicationController
  before_filter :load_client

  def load_client
    @client = Client.find(params[:client_id])
  end

  # Your stuff here
end
<% form_for [@client, @user] do |f| %>