我的教育表中有一列"SchoolName“,我想检查以下代码:
<% @user_education.each do |e| %>
<% if !e.SchoolName.nil? and e.Private? == "1" %>
<%= check_box(:ChkBx_Education, "", true) %>
<%= label(:lb_Profession, "Education") %>
<% else %>
<%= check_box(:ChkBx_Education,"" ) %>
<%= label(:lb_Profession, "Education") %>
<% end %>
<% end %>
@user_education变量来自控制器页面,即@user_education=Education.where(:UserID => current_user.id)
,我的问题是,这个陈述!e.SchoolName.nil?
是对的还是错的?我想确保如果SchoolName
不是nil
和Private? is equal to "1"
,那么它会选中复选框。
发布于 2014-03-30 23:15:18
下面一行的正确约定如下所示,将Private?
作为布尔列。遵循rails约定的正确代码应该如下所示
<% if e.school_name.present? and e.is_private? %>
发布于 2014-03-30 22:57:03
伙计,您打破了用Ruby开发应用程序的规则。
Active Record根据这些列的用途,对数据库表中的列使用命名约定。
Ruby中的属性名称应该总是不大写的,就像局部变量一样。
外键-应该按照以下模式命名: singularized_table_name_id (例如: item_id,order_id)。在创建模型之间的关联时,活动记录将查找这些字段。
主键-默认情况下,活动记录将使用名为id的整数列作为表的主键。当使用Rails Migrations创建表时,将自动创建该列。
我认为在使用任何应用程序之前,您应该参考红宝石导轨并仔细阅读它。
发布于 2014-03-31 00:30:39
根据注释,您需要将数据库列重命名为小写,以便进行初始语法改进:
<% @user_education.each do |e| %>
<% if e.school_name && e.private? %> =-> .private? should return true / false if column is boolean
<%= check_box(:checkbox_education, "", true) %>
<%= label(:checkbox_education, "Education") %>
<% else %>
<%= check_box(:checkbox_education,"") %>
<%= label(:checkbox_education, "Education") %>
<% end %>
<% end %>
https://stackoverflow.com/questions/22754636
复制