我想在我的节目视图中有一个拆分下拉按钮(twitter引导程序风格),这样用户就可以使用集合(bids、in_progress、complete、cancelled)更改他们"工作"的当前"状态"。
以下是我当前如何更改我的_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();
这不起作用——我走对了吗?这似乎应该提交表单。
您可以直接在显示视图中创建一个只有状态字段的新表单(或者在分部视图中,这并不重要)。然后让一些javascript在下拉列表更改时提交表单。
如果您使用rails表单帮助器,它们将把提交指向控制器的更新操作,并且由于只有state属性存在,这是唯一将被更新的属性。