繁体   English   中英

Rails中的注册表单和外键

[英]registration forms and foreign keys in Rails

好的,我在这里遗漏了一些明显的东西,但是这里有:

我用Devise创建了一个用户

我创建了一个有四个目标的user_goals模型

我在users表中创建了一个user_goal_id字段。

在我的用户注册表单中,我想呈现四个可能目标的collection_select ,并在创建用户时将所选目标的id放入users表中。

我无法弄清楚如何做到这一点。 具体来说,我无法弄清楚如何将user_goals选择的id写入users表中的user_goal_id字段。

编辑:

我是否需要创建user_goals控制器,或者我可以将控制器逻辑放在users_controller中?

请问准确的问题,这太笼统了。 给出代码的某些部分并提出准确的问题,如果你真的不明白你的要求,试图回答你的人也不会理解。 请检查rails指南,有一个很好的章节关于ActiveRecord关系(包装外键)和做一些tutotials。 一旦你理解它是如何工作的,如果你需要一个错误信息或一段代码的精确帮助,请回来问你的问题,你会得到快速答案我敢肯定:)

好的,事实证明这很简单。 您无需在控制器或模型中执行任何逻辑。 您只需在注册表中执行以下操作:

<%= form_for(resource, :as => resource_name, :url => registration_path(resource_name)) do |f| %>

上面的行只是创建表单的form_for 脚手架,或者在这种情况下,Devise会创造这个。 记住do |f| 在末尾。

<%= devise_error_messages! %>
    <%= f.label :Whats_your_goal? %><br />
    <%= f.collection_select :user_goal_id, UserGoals.all, :id, :name, { :include_blank => ""}%>

第一行只是该字段的标签

第二行是下拉线。 f.collection_select告诉表单生成器这将是一个下拉列表的选项。

:user_goal_id是users表中我想要从user_goals表记录目标foreign key的字段的名称。

UserGoals.all是我希望从下拉列表中填充的数据库表的名称。 .all说我想要那个数据库表中的所有项目

我相信:id,通过他们的数据库ID号或主键拉取项目,并且:name表示给我表的名称列,而不是描述或其他东西。

最后, { :include_blank => "" }只是在下拉列表的顶部创建一个空格,因此没有默认选择。 如果需要,您也可以在""之间添加消息。

我很难找到一个简单的解释,可能因为它是如此基本。 希望其他人会觉得这很有用。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM