首页 > 解决方案 > 循环内的第一个 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

标签: ruby-on-railsformsloops

解决方案


推荐阅读