ruby-on-rails - 循环内的第一个 form_tag 永远不会触发控制器动作
问题描述
我在一个看起来像这样的循环中有一个表单:
- @templates.each do |template|
tr
td.col-md-2
= template.kind.capitalize
td.col-md-9
= form_tag(add_workout_from_template_path, method: :post) do
= hidden_field_tag 'date', params[:date]
= hidden_field_tag 'athlete', params[:athlete]
= hidden_field_tag 'title', template.title
= hidden_field_tag 'kind', template.kind
= hidden_field_tag 'distance', template.distance
= hidden_field_tag 'duration', template.duration
= hidden_field_tag 'notes', template.notes
= hidden_field_tag 'video', template.video
= submit_tag(template.title, class: 'fake-button')
td.col-md-1
= link_to image_tag('cancel.png'),
template_path(template),
method: :delete
对于迭代 2、3 和 4,它就像一个魅力。每当我单击template.title
表单执行时,点击控制器并执行我想要的操作。它打印此列表,我可以单击标题将它们添加到日历中:
但是,当我单击第一个(其他 20x ...)时,它永远不会在控制器中创建它应该创建的内容,它只会创建一个空白对象并重定向。当我尝试在控制器中加注时,它从不会在第一个加注时加注,所以由于某种原因,它似乎根本没有击中控制器?
我在这里做错了什么?
控制器代码:
def add_workout_from_template
@athlete = User.find_by(slug: params[:athlete])
@workout = Workout.create!(
user: @athlete,
date: params[:date],
title: params[:title],
kind: params[:kind],
distance: params[:distance] || 0,
duration: params[:duration] || 0,
notes: params[:notes],
video: params[:video]
)
redirect_to team_user_workouts_path(current_user.team,
current_user, athlete: @athlete)
end
解决方案
推荐阅读
- docker - CORS 在带有 NGINX 的 Docker-Compose Stack 中某处失败-找不到
- kotlin - lateinit 属性没有被 dagger 和 coroutine 初始化
- java - Java/Regex - 匹配所有内容直到下一次匹配
- android - Android:RecyclerView 填充防止全屏体验
- javascript - 关闭 WebView 弹出窗口不会返回到 WebView
- react-native - 无法在 Android 模拟器中更改位置
- amazon-web-services - aws-cli 仅返回某些字段
- java - Java Gui 不会显示面板和组件
- flutter - 对字符串中的数字进行排序
- jquery - 从表单数据填充数据表