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控制器用户信息索引、新建、编辑