Ruby on rails 如何在外部控制器中添加模型的新对象

Ruby on rails 如何在外部控制器中添加模型的新对象,ruby-on-rails,Ruby On Rails,我对Rails还不太熟悉 我正在为用户制作个人资料页面。show视图分为多个部分。关于我的建模结构,一个用户可以拥有技能。但是User模型本身没有Skill相关列,因此所有Skill条目都保存在Skill模型中 因此,我的问题是,如何在用户显示视图中包含一个分部,该视图包含一个简单的add技巧表单(仅需要名称),它将该技能保存到自己的表中,并将其添加到当前用户技能的集合中。?在User\show中创建可在视图中使用的@Skill=Skill.new 然后在你的部分你可以做 <%= form

我对Rails还不太熟悉

我正在为
用户
制作个人资料页面。
show
视图分为多个部分。关于我的建模结构,一个
用户
可以拥有
技能
。但是
User
模型本身没有
Skill
相关列,因此所有
Skill
条目都保存在
Skill
模型中

因此,我的问题是,如何在
用户
显示
视图中包含一个分部,该视图包含一个简单的add
技巧
表单(仅需要名称),它将该技能保存到自己的表中,并将其添加到当前
用户技能的集合中。

User\show
中创建可在视图中使用的
@Skill=Skill.new

然后在你的部分你可以做

<%= form_for(@skill), ... %>


更多信息请访问

我不理解您的问题。您可以在partial中定义一个表单,在controller的操作中,您只需保存技能并将用户的id与之关联。我希望您知道技能模型必须属于用户,并且技能表中应该有一个用户id列来创建关联。尽管我正在编写下面创建关联的示例代码

skill = Skill.new
user.skill << skill #Add association for user and skill
#Add skill related info from params into the skill model object
skill.save!
skill=skill.new

user.skill如果您在skill/_form.html.erb上有表单的部分o,您可以执行以下操作:

<%= render "skills/form", skill: @skill %>
在显示配置文件控制器的操作时。要保存该技能,您必须在Profile controller的更新操作中执行该操作:

@skill = Skill.create(params[:skill])
@user.skills < @skill
@user.save
@skill=skill.create(参数[:skill])
@用户技能<@skill
@user.save

为此,您必须在routes.rb文件中创建一个嵌套资源(假设
用户
拥有多个:技能
技能
属于:用户
)。
@skill = Skill.create(params[:skill])
@user.skills < @skill
@user.save