Rails按钮用于更新嵌套属性的状态

时间:2017-12-27 16:32:20

标签: ruby-on-rails

我有一个模型项目和一个模型ProjectLine。 Project具有ProjectLine的嵌套属性。

在我的项目展示视图中,我列出了包含任务列表的项目信息。

onActivityResult()

使用cocoon在项目表单上创建任务。

在上面的视图中,在状态名称之后,我希望每个项目行都有一个按钮来更改状态。

我到目前为止找到的解决方案是创建一个表单。

 <% @project.project_lines.each do |project_line| %>

 <%= project_line.user.name %>
 <%= project_line.description %>
 <%= number_to_currency project_line.amount, precision: 0, unit: "USD ", separator: ",", delimiter: "," %>
 <%= project_line.task_status_name %>

 <% end %>

我尝试将其置于部分项目上并在循环<%= semantic_form_for @project_line do |f| %> <%= f.hidden_field :status, :value=>2 %> <%= f.submit 'ACCEPT', class: 'btn btn-primary btn-md' %> <% end %> 上调用它,但我无法使其正常工作。

如何获得每个项目行的按钮以更改项目行状态?

1 个答案:

答案 0 :(得分:0)

如果我理解你的要求,那就是

视图

<% @project.project_lines.each do |project_line| %>

  <%= project_line.user.name %>
  <%= project_line.description %>
  <%= number_to_currency project_line.amount, precision: 0, unit: "USD ", separator: ",", delimiter: "," %>
  <%= project_line.task_status_name %>
  <button class="accept_to_server">Accept</button>
 <% end %>

的JavaScript(jQuery的)

$.('.accept_to_server').on('click', function(){
  $.ajax({
    url: 'path/to/accept/route'
    method: 'PUT' // or what method your route uses
    data: {data:you, need:here}
  }).done(function(data){
    // update your view
  }).fail(function(){
    // something went wrong
  });
};

希望这会有所帮助。