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

时间:2014-09-30 11:10:01

标签: ruby-on-rails

我对Rails很新。

我正在处理User的个人资料页面。 show视图分为部分视图。关于我的建模结构的问题是,User可以有Skill。但User模型本身没有Skill相关列,因此所有Skill条目都保存在Skill模型中。

所以,我的问题是,如何在User show视图中包含一个部分内容,其中包含一个简单的添加Skill表单(仅限名称),可以保存该技能进入自己的表并将其添加到当前User.skills的集合中?

3 个答案:

答案 0 :(得分:0)

User#show中创建一个@skill = Skill.new,您可以在视图中使用它。

然后在你的部分你可以做

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

http://guides.rubyonrails.org/form_helpers.html

了解详情

答案 1 :(得分:0)

我不明白你的问题。您可以在部分和控制器的操作中定义表单,您只需保存技能并将用户的ID与其关联即可。我希望你知道技能模型必须属于用户,并且技能表中应该有一个user_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!

答案 2 :(得分:0)

如果你在skill / _form.html.erb上有部分表格,你可以这样做:

<%= render "skills/form", skill: @skill %>
视图上的

,您必须添加

@skill = Skill.new

关于Profile控制器的show动作。要保存该技能,必须在Profile控制器上执行更新操作:

@skill = Skill.create(params[:skill])
@user.skills < @skill
@user.save