在“show”视图中使用Rails表单元素?

时间:2013-02-10 20:39:53

标签: ruby-on-rails ruby forms user-interface state

我希望在我的节目视图中有一个分割下拉按钮(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();

这不起作用 - 我是否走在正确的轨道上?看来这应该提交表格。

1 个答案:

答案 0 :(得分:1)

你可以直接在show视图中创建一个只有状态字段的新表单(或者在部分中,并不重要)。然后,只要下拉列表发生更改,就会有一些javascript提交表单。

如果你使用rails form-helper,他们会将提交指向控制器的更新操作,因为只有state属性存在,这是唯一要更新的属性。