Ruby Rails 为前端添加收藏夹按钮的正确方法

Ruby on Rails proper way to add a favorite button for front end

到目前为止,我有两个 tables 用户和公司。用户可以收藏很多公司。我建立了所有后端代码来添加收藏夹(连接 table 具有多对多关系)我还有一个通用设置来添加收藏夹。

不过我需要一些前端方面的帮助。

到目前为止,我拥有的是一个搜索页面,用户可以在其中查询公司代码以获取公司。我显示如下

<% if @results %>
  <h4>Search results for <%= @symbol %></h4>
  <table>
    <tr>
      <th>ID</th>
      <th>Symbol</th>
      <th>Name</th>
    </tr>

    <% @results.each do |res| %>
      <tr>
        <td><%= res.id %></td>
        <td><%= res.symbol %></td>
        <td><%= res.name %></td>
        <td><%= link_to "Favorite", create_favorite_path(current_user.id, res.id), method: :post, :remote => true %></td>
      </tr>
    <% end %>
  </table>
<% end %>

现在我用

实现了 "favorite button"
<td><%= link_to "Favorite", create_favorite_path(current_user.id, res.id), method: :post, :remote => true %></td>

看起来很乱,我觉得这样不对。我还想添加更多功能

我很乐意提出改进和正确执行的建议

我更喜欢使用 front-end 框架来处理此类事情。它们允许组件更加动态地交互。

re: 我想知道 post 方法是否成功 在没有 front-end 框架的情况下,您可以在 favorites_controller 中捕获失败的保存并向页面添加一个 flash[:error]。

flash[:errors] = @favorite.errors.full_message unless @favorite.save!

回复:基于 post,我希望能够将按钮文本更改为类似 "saved" 的内容 您可以使用 jQuery 来更改按钮 CSS 点击最喜欢的按钮。

<% if @results.favorited? %>
# render button with favorited class (with star)
<% else %>
# render button without favorited class (without star)
<% end %>