Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.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 创建控制器和视图_Ruby On Rails_Ruby On Rails 3_Ruby On Rails 3.2 - Fatal编程技术网

Ruby on rails 创建控制器和视图

Ruby on rails 创建控制器和视图,ruby-on-rails,ruby-on-rails-3,ruby-on-rails-3.2,Ruby On Rails,Ruby On Rails 3,Ruby On Rails 3.2,你好,我有以下型号 用户模型: class User < ActiveRecord::Base attr_accessible :email, :password, :password_confirmation has_one :user_informations has_secure_password end class用户

你好,我有以下型号

用户模型:

class User < ActiveRecord::Base
  attr_accessible :email, :password, :password_confirmation
  has_one :user_informations
  has_secure_password
end
class用户
用户信息模型:

class UserInformation < ActiveRecord::Base
  belongs_to :user
  attr_accessible :address, :address2, :business, :descripcion, :identification_number, :mobile_cell, :name, :phone_number
end
class用户信息
现在我需要创建视图和控制器来创建和更新用户信息,我有很多问题:

1) 如何生成控制器:

rails g控制器用户信息

o

railsg控制器用户信息

2) 我的新建、创建和更新操作如何知道用户ID

3) 如何设置此用户信息的路由

谢谢。也许这是一个基本的问题,但我是rails新手,不知道怎么做

再次感谢您的帮助。

首先

在用户模型中,应该有

  has_one :user_information
因此,协会名称应与has_one单数

您可以通过发出命令来创建控制器

rails g controller UserInformation
这取决于你想给你的控制器起什么名字

在新操作中,您必须通过其id查找用户。您可以在会话中存储用户id 登录后。或者,如果第一次保存用户,则必须传递用户id

在新的行动中

user = User.find(session[:id])
user.user_information.create(params[:user_information])
我想你需要先研究一下这些。浏览一些例子。然后试试看。在这里询问太快了。

1)您必须对控制器使用pluralize,因此
rails g controller UserInformations
将起作用

2+3)您可以设置Restful路由:

resources :users do
  member do
    get 'user_information'
  end
end
通过以上路由,您将拥有路径
用户/:id/user\u信息
,因此您可以通过
参数[:id]
,例如,在您的创建或更新操作中,您可以使用:

user = User.find(params[:id])

要查找显示信息的用户。

在用户信息表和模型中需要一个用户id列

1) rails-g用户控制器

2) 您可以将用户_id包含为param,因此对于新操作,它将是

def new
  @user = User.find(param[:user_id])
  @user_information = @user.user_information.new
end
创建和更新操作将从表单参数获取用户id,但您需要考虑谁将使用这些操作,以及是否允许所有用户更新其他用户的信息。如果没有,您应该将用户id作为隐藏参数,并使用像cancan这样的gem(https://github.com/ryanb/cancan)限制访问

或者,您可以将它们设置为嵌套资源(http://railscasts.com/episodes/139-nested-resources)

3) 对于简单的资源,您可以将其添加到routes.rb文件中

resource :user_information
或者对于嵌套的,您可以这样做

resource :users do
  member do
    resource :user_information
  end
end

Thnaks Akshay Vishnoi但是我有一个关于控制器的问题,在rails控制器惯例中说控制器是复数,所以我不知道控制器应该是rails g控制器用户信息或rails生成控制器用户信息。谢谢你应该使用控制器名复数。它在路线上有帮助。对于索引操作,我们可以直接使用用户信息路径。因此,在您的情况下,使用“rails g controller user_Information”,如果您在generate命令中提供动作名称,rails将自动为您生成动作方法和视图。例如,rails g控制器用户信息索引、新建、编辑