将 link 从 ERB 链接到控制文件

Linking a link from ERB to the control file

我正在尝试对我的 ruby erb 列表进行排序,到目前为止它已成为列表然后我想要一种在单击 "sort by date" 时对列表进行排序的方法。我不知道从哪里开始? 我确定是否使用 href 标签或使用什么。

<table class="user_display">
            <tr>
              <th>Name</th>
              <th>Date</th>
              <th>Friends</th>
            </tr>
            <% @mentions.each do |name| %>
                <tr>
                  <td><%=h name %></td>
                  <td><%=h date %></td>
                  <td><%=h friends %></td>
                </tr>
            <% end %>
          </table>

这不是真正的代码,但它遵循相同的想法,只是更改了一些名称。 那么我如何拥有一个按钮或 link,当他们单击它时,它会对数组重新排序? 我觉得我应该按照

的方式传递一些东西
<input class="order" type="button" name="date" value="<%=h params[:orderdate] %>"/>

这是正确的想法吗?如果是这样,我如何 link 到控制器文件?其中有

get '/list' do  
  @mentions = array_of_names
  erb :list
end

有什么想法吗?

如果您有对象 'Mention':

,这将在@mentions 中放入按日期排序的数组

@mentions = Mention.order(:date)

您不需要从视图传递任何参数,您可以在控制器中管理顺序

尝试将其添加到视图中:

<%= link_to 'Order by date', sort_mentions_path(:order_type => 'date'), :class => 'btn' %>
<%= link_to 'Order by name', sort_mentions_path(:order_type => 'name'), :class => 'btn' %>

在控制器中可能是这样的:

def sort
  if( params[:order_type] == 'name')
    @mentions = Mention.order('name')
  elsif ( params[:order_type] == 'date')
    @mentions = Mention.order('date')
  else
    @mentions = Mention.all
  end    
  respond_to do |format|
    format.html { }
    format.json { render json: @mentions }
  end
end (Remember to add sort.html.erb with the list view)

路线:

resources :mentions do
  collection do
    get 'sort'
  end
end