2017-08-28 36 views
0

我在React正在访问组件的Rails数据库中有对象。 React将这些对象的两个属性显示为列表。我想根据其中一个未显示的属性对列表进行排序,但通过Rails数据库可用于React。该属性是“updated_at”值。理想情况下,我希望最近更新的对象显示在列表顶部。如何对React组件中的Rails数据库对象进行排序

数据可通过该电话反应:

document.addEventListener('DOMContentLoaded',() => { 
    const node = document.getElementById('projects_data') 
    const data = JSON.parse(node.getAttribute('data')) 
    ReactDOM.render( 
    <Projects projects={data} />, 
    destination) 
    }) 

以下是我正在试图现在没有成功列表进行排序。没有错误,但它不起作用。目标是每次将新对象(称为“项目”)添加到数据库时重新对列表进行排序。

addNewProject(project){ 
    const projects = update(this.state.projects, { $push: [project]}); 
    this.setState({ 
     projects: projects.sort(function(a,b){ 
      return new Date(a['updated_at']) - new Date(b['updated_at']); 
     }) 
    }); 
} 

这里的列表组件:

export const Project_list = ({projects}) => 
    <table className="table">     
     <tbody> 
     <tr> 
      <th>Project Name</th> 
      <th>Project Status</th> 
      <th>Action</th> 
     </tr> 
     {projects.map(function(project){   
      return (       
      <Project project={project} key={project.id} />   
       ) 
     })} 
     </tbody> 
    </table> 
+1

我可以向你介绍一个伟大的表格与排序,搜索,... .... http://allenfang.github.io/react-bootstrap-table/我不知道你想要什么在未来做,但我认为我救了你从重新定义轮:) – Nocebo

+0

你确定你正在返回'updated_at'为新增项目? – Ozgur

+0

@OzgurGUL我已经将对象信息添加到上述问题中,但“updated_at”确实出现在每个对象的对象div中。 – JohnOHFS

回答

0

我解决了这个问题,有两个不同的修复。

  1. 我增加了一个 “命令” 到我的仪表盘控制器:

@projects = @ current_user.projects.order( “的updated_at DESC”)

  • 我改变了 “返回新日期(A [ '的updated_at']) - 新日期(b [ '的updated_at']);” 到

    返回新日期(b [ '的updated_at']) - 新日期(一个[ '的updated_at']);

  • 相关问题