ruby-on-rails - 如何使用 Rails 将计数器写入数据库
问题描述
我正试图在脚手架上写下企业的营业时间。
我正在这样做,使用嵌套数据库,特别是我正在关注本教程
http://railscasts.com/episodes/196-nested-model-form-part-1?
适应我的情况。该教程显示了调查的创建,而我正在记录营业时间。
一切正常,但我在计算天数时遇到问题..
我在我的控制器中使用它:
def new
@biz = Biz.new
7.times { @biz.hours.build }
end
通过这种方式,我在我的模块中写了 7 倍的工作时间并且它工作正常。我的问题是我想在我的数据库中发布的“day_id”,理想情况下它应该是 1=Monday、2=Tuesday 等。但是我的输入视图是这样设置的:
<%= f.fields_for :hours do |builder| %>
<tbody>
<tr>
<td> <%= builder.label :day, "Monday" %> <%= builder.text_field
:day, :value => "1", :style =>"display: none" %> </td>
<td> <%= builder.time_select :open_time %> </td>
<td> <%= builder.time_select :close_time %> </td>
<td> <%= builder.check_box :chiusurastra %> </td>
<td> <%= builder.text_field :motivochistra %> </td>
</tbody>
<% end %>
当然这不起作用,因为“一天”总是在控制器运行的 7 次中各获得 1 次(而且我总是在视图中显示星期一)
有没有办法根据控制器执行相应地更改我在视图中使用的 :value => "1" 和我在 7 次中显示的 "Monday"?
非常感谢!
解决方案
而不是 7.times 在你的控制器中你可以做
[0,1,2,3,4,5,6].each do |day|
@biz.hours.build :day => day
end
为了在标签中显示日期名称,您也可以使用数组。
day_names = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']
这里棘手的部分是让数组索引与您的日期数匹配。如果在某些时候您想使用本地化文件,例如https://github.com/svenfuchs/rails-i18n/blob/master/rails/locale/en.yml一周从星期日开始(day_names[0])并以星期六(day_names[6])结束。所以我建议将您的日期索引更改为 [0,1,2,3,4,5,6] 并从 0 = 星期日开始
在您看来,您可以将日期列更改为以下内容:
<td><%= builder.label :day, day_names[day] %> <%= builder.hidden_field :day %></td>
隐藏字段的值应该自动设置
推荐阅读
- python - 如何修复 TypeError:__init__() 缺少 1 个必需的位置参数:'y'
- php - 如何使用安装在 Docker 外部的 Nginx 在 Docker 中代理 php-fpm 程序
- python - 我们如何使用 uvicorn 服务器在 cpanel 上部署 django 应用程序?
- android - 使用 Jetpack Compose Navigation 时导航图是否已过时?
- algorithm - 在有向图中找到返回到起始节点的所有循环,直到一定长度
- postgresql - AWS DMS 无法在 RDS Postgres 之间迁移文本列
- python - Python:从for循环返回列表
- ios - 如何使用 UNNotificationRequest 将本地通知设置为在每个月的最后一天触发?
- reactjs - NextJS CSP 标头破坏 PDFtron iframe 内容
- html - 如何让 CSS webkit-scrollbar 与 HTML 对象标签一起使用?