Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 如何在rails中提交/更新表单而不提交单击?_Ruby On Rails_Ruby On Rails 5 - Fatal编程技术网

Ruby on rails 如何在rails中提交/更新表单而不提交单击?

Ruby on rails 如何在rails中提交/更新表单而不提交单击?,ruby-on-rails,ruby-on-rails-5,Ruby On Rails,Ruby On Rails 5,生成了一个招聘模型,该模型与考勤模型有一对多关联。现在我想在用户更改考勤下拉列表时提交/更新表单。这是我的密码- <table> <thead> <tr> <th>Name</th> <% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %> <

生成了一个
招聘
模型,该模型与
考勤
模型有
一对多
关联。现在我想在用户更改考勤下拉列表时提交/更新表单。这是我的密码-

  <table>
    <thead>
      <tr>
        <th>Name</th>

        <% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %>
              <th><%= date %></th>
        <% end %>

      </tr>
    </thead>

    <tbody>
      <% @recruitment.each do |recruitment| %>
        <tr>
            <td><%= recruitment.name %></td>

            <% (1..(Time.days_in_month Time.now.strftime("%m").to_i)).each do |date| %>
                  <td>


                    <%= form_for Attendance.new do |f| %>
                        <div>
                          <div class="wrapper-class">
                              <%= f.select :status, [['P', 1], ['A', 2], ['H', 3]]%>
                          </div>

                          <div>
                            <%= f.hidden_field :attendance_date, value: (Time.now.strftime("%Y").to_s+"-"+Time.now.strftime("%m").to_s+"-"+date.to_s)%>
                          </div>

                            <%=f.hidden_field :recruitment_id, value: recruitment.id%>
                          </div>
                          <div>
                            <%= f.submit 'Submit', :class => 'button primary small float-right' %>
                          </div>

                    <% end %>
                  </td>
            <% end %>


但这不起作用。

我怀疑如果您检查生成的HTML代码,您将不会看到select字段的
onchange
属性

像这样

select
方法在到达
html\u options
之前需要一个
options
散列,所以要解决这个问题,我们需要

<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, :onchange => 'this.form.submit()' %>
“this.form.submit()”%>
如果您需要指定任何其他HTML选项,例如类或样式,您可以这样做

<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>

注意
onchange
class
属性周围的花括号


相关文档:

您是否使用rails ujs?如果是这种情况,您可以在onchange属性中添加类似这样的内容:“Rails.fire(this.form,'submit');”@Smek yes。在这种情况下,您应该能够在onchange属性中用Rails.fire(this.form,'submit')替换this.form.submit()。它将触发与Rails通过Rails ujs提交表单时相同的表单事件。@Smek我在发布代码时尝试过,但没有成功
<%= f.select :status, [['P', 1], ['A', 2], ['H', 3]], {}, { onchange: 'this.form.submit()', class: 'some-css-class' } %>