2017-12-27 436 views
0

我有一个模型Project和一个模型ProjectLine。 Project为ProjectLine嵌套了属性。Rails按钮来更新嵌套属性的状态

在我的项目中显示视图我列出了项目信息和任务列表。

<% @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 %> 

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

在上面的视图中,状态名称之后,我想为每个改变状态的项目行都有一个按钮。

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

<%= semantic_form_for @project_line do |f| %> 

    <%= f.hidden_field :status, :value=>2 %> 
    <%= f.submit 'ACCEPT', class: 'btn btn-primary btn-md' %> 

<% end %> 

我试图将其放置在部分项目上,并调用它的循环<% @project.project_lines.each do |project_line| %>,但我不能得到它的工作。

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

+0

将窗体指向控制器动作,并向其传递所需的ID以更改状态。使用Ajax更新您的视图。 –

+0

感谢您的评论。你能提供代码示例吗? – Catmal

回答

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 
    }); 
}; 

希望此行有助于出来。