Rails-尝试更改值时出现stringify_key错误

时间:2018-09-27 21:12:30

标签: ruby-on-rails

我有一个按钮,它可以更改布尔值以停用对象而不是删除对象。它可以工作,但是当我尝试对其应用样式时,出现以下错误:

undefined method `stringify_keys' for "/coins/1/flop":String

我了解stringify_keys正在尝试将符号转换为字符串,但是我不确定它如何应用于这种情况或如何解决。

<div class="coin-container__coin-header-container" id="coin-hdr">
  <img class="" src='<%= @img_url_ %>' />
  <h2><%= @coin.currency_name %></h2>
  <% coin_change_class = "coin-change" %>
  <% @percent_change_1h_ >= 0 ? coin_change_class += ' positive' : coin_change_class += ' negative' %>
  <p class='<%= coin_change_class %>'><%= @percent_change_1h_ %>%</p>

  <div class="coin-update-buttons">     
    <% if can? :update, @coin %>
        <%= link_to edit_coin_path(@coin), "data-turblinks" => "false" do %>
            <i class="fas fa-pencil-alt"></i>
        <% end %>
    <% end %>
    <% if can? :destroy, @coin %>
      <%= link_to (@coin.accepted ? true : false), flop_coin_path(@coin), data: { confirm: "Do you want to delete this coin?" } do %>
        <i class="far fa-trash-alt"></i>
        <% end %>
    <% end %>
  </div>

</div>

我的Coin控制器中的flop方法如下:

def flop
  coin = Coin.find(params[:id])
  coin.accepted = !coin.accepted
  coin.save
  redirect_to coin_path(coin)
end

有人可以指出我在这里出问题的方向吗?

1 个答案:

答案 0 :(得分:0)

  

“ / coins / 1 / flop”的未定义方法'stringify_keys':字符串

link_to(url, html_options = {}) do
  # name
end

您做错了。将样式应用于具有名称和块的link_to的正确方法如下。

<%= link_to flop_coin_path(@coin), data: { confirm: "Do you want to delete this coin?" } do %>
  (@coin.accepted ? true : false) <i class="far fa-trash-alt"></i>
<% end %>

link_to中显示一个布尔值作为名称也很奇怪。我会这样做

<%= link_to flop_coin_path(@coin), data: { confirm: "Do you want to delete this coin?" } do %>
  (@coin.accepted ? "Activate" : "Deactivate") <i class="far fa-trash-alt"></i>
<% end %>