我是Rails的新手所以要温柔。我有一个模型,'事件',其中包含以下信息:'sport','home_team','away_team'和日期时间的'time'。
现在,我想让用户“关注”特定事件,并尝试找到最佳方法。理想情况下,我想要一个带有依赖下拉列表的表单。例如,用户首先选择“日”,然后选择“运动”,然后从该“日”和“运动”的相关“事件”列表中进行选择。然后将此关联存储在名为“follow”的富联接表中。
我见过涉及多个模型的复杂表单的教程,但是什么时候来自同一个模型呢?如何构建表单以获取少量相关记录。我对“运动”只有一些不同的价值,所以我不确定给它自己的模型是否合理。我可以从“日期时间”值轻松获取特定日期的事件吗?
答案 0 :(得分:0)
有很多方法可以解决这个问题,这里有一个选择: 由于您希望查看多个事件,因此您可能会开始关注索引操作。从创建和索引操作开始,但添加一些钩子来过滤它,即
def index
if params[:sport]
@events = Event.where("sport = ?",params[:sport])
else
@events = Event.all()
end
end
现在,如果你已经定义了这样的路线:
资源:事件
您将拥有一条接受获取请求的路线/事件,并将您引导至索引操作。
但是如果你想要一个可以选择内容的表单,默认情况下表单会POST,但是你可以创建一个表单来获取'/ events'
即。在app / views / events / index.html.erb
中<%= form_tag '/events', :method=>:get %>
然后,您要创建将发送参数的表单元素。
即。
<%= select_tag 'sport', '<option>baseball</option><option>football</option>' %>
输入提交按钮
<%= submit_tag 'See Events'
然后用
'结束'你的表格<% end %>
现在,当您点击“查看活动”按钮时,您将向路线'/ events'发送获取请求,并且'sport'参数将显示在索引操作中,过滤事件。
为了简单起见并且在索引视图中,您可以在表单后列出所有事件。
<% @events.each do |e| %>
Sport: <%= e.sport %><br/>
Home Team: <%= e.home_team %><br/>
Away Team: <%= e.away_team %><br/>
Time: <%= e.time.strftime('%H %M') %><br/>
<% end %>