【发布时间】:2014-11-14 22:10:38
【问题描述】:
我有一个具有以下属性的班级活动:
String type, Date date, String title
通过包含关联,它还具有 user_id 和 place_id。
class Activity < ActiveRecord::Base
belongs_to :user
belongs_to :place
在另一边用户有很多活动和地方有很多活动
所以,问题是当我想创建一个新活动时: Scaffold 创建助手 _form :
<%= form_for(@activity) do |f| %>
<% if @activity.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@activity.errors.count, "error") %> prohibited this activity from being saved:</h2>
<ul>
<% @activity.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :type %><br>
<%= f.text_field :type %>
</div>
<div class="field">
<%= f.label :date %><br>
<%= f.datetime_select :date %>
</div>
<div class="field">
<%= f.label :title %><br>
<%= f.text_field :title %>
</div>
<div class="field">
<%= f.label :user_id %><br>
<%= f.number_field :user_id %>
</div>
<div class="field">
<%= f.label :place_id %><br>
<%= f.number_field :place_id %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
我想从表单中接收前 3 个字段(类型、日期和标题),但要将用户和地点关联起来,我必须以其他方式。我需要实际登录的用户,并且通过提示名称来选择位置。
我的想法如下:
1)用户问题,我可以使用我有权限的current_logged_user查询,获取他的ID。
2)地点问题,我可以使用从表单收到的名称,并在我的 Places 表中查询名称为 X 的地点,然后获取 ID。
但是,由于我对 Rails 了解不多,我该怎么做呢?我如何使用 f.text_field 然后在控制器中进行查询或其他操作?
Controller 已经有了这个东西:
def create
@activity = Activity.new(activity_params)
(...)
private
# Use callbacks to share common setup or constraints between actions.
def set_activity
@activity = Activity.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def activity_params
params.require(:activity).permit(:type, :date, :title, :user_id, :place_id)
end
【问题讨论】:
标签: ruby-on-rails ruby ruby-on-rails-3 ruby-on-rails-4 form-helpers