我想使用 ransack 为带有Users. 我有一个从出生日期计算年龄的小方法:
def age(dob)
now = Time.now.utc.to_date
now.year - dob.year - ((now.month > dob.month || (now.month == dob.month && now.day >= dob.day)) ? 0 : 1)
end
Run Code Online (Sandbox Code Playgroud)
这适用于正常显示 ( as in age(@user.date_of_birth))
但是当使用 search_form_for 时,我不能这样做:
<%= search_form_for @search, url: search_users_path, method: :post do |f| %>
<div class="field">
<%= f.label :date_of_birth_gteq, "Age between" %>
<%= f.text_field :date_of_birth_gteq %>
<%= f.label :date_of_birth_gteq, "and" %>
<%= f.text_field :date_of_birth_lteq %>
</div>
<div class="actions"><%= f.submit "Search" %></div>
<% end %> …Run Code Online (Sandbox Code Playgroud) 我有一个用户和个人资料模型,我使用相同的表单来填充它们.在我的控制器中,我有一行:@ user.build_profile
我想知道这条线做了什么.用户和配置文件之间的关系是一对一的,配置文件属于用户.
我还有一个名为image的新模型,我想使用嵌套属性与用户建立一对多的关系.在我在用户coltroller中的新动作中,我应该使用类似于上面那样的行吗?@ user.build_image
完整的新动作:
def new
@user = User.new
@user.build_profile
respond_to do |format|
format.html # new.html.erb
format.json { render json: @user }
end
end
Run Code Online (Sandbox Code Playgroud)