我希望在我的节目视图中有一个分割下拉按钮(twitter bootstrap style),以便用户可以使用集合更改其“作业”的当前“状态”(出价,in_progress,完成,取消)。
以下是我当前如何更改my _form中的状态(工作正常):
<%= f.input :state, :collection => %w(bids in_progress complete canceled), :checked => 'bids', :as => :radio_buttons %>
但我宁愿用户不必通过整个表单来改变状态。如果你愿意的话,他们会很好地改变状态。
我应该如何将其转换为下拉列表并在表单之外使用它?注意 - 我仍然希望在表单中保留比率集合。
我应该只使用按钮创建一个部分并在“显示”视图中渲染它吗?我需要在控制器上添加一些东西吗?也许使用javascript更容易/更好?很多问题,不知道从哪里开始。感谢。
更新
我用这个创建了一个部分:
<%= simple_form_for(@job, :remote => true) do |f| %>
<%= f.input :state, collection: [ ['bids', 'Bid'], ['in_progress', 'In Progress'], ['complete', 'Complete'] ], label_method: :last, value_method: :first, :onchange => 'this.form.submit()' %>
<% end %>
并添加了一些javascript:
$(this.form).submit();
这不起作用 - 我是否走在正确的轨道上?看来这应该提交表格。
答案 0 :(得分:1)
你可以直接在show视图中创建一个只有状态字段的新表单(或者在部分中,并不重要)。然后,只要下拉列表发生更改,就会有一些javascript提交表单。
如果你使用rails form-helper,他们会将提交指向控制器的更新操作,因为只有state属性存在,这是唯一要更新的属性。