【问题标题】:ROR syntax error with a for each loop每个循环都有 ROR 语法错误
【发布时间】:2018-03-26 15:20:46
【问题描述】:

所以我试图在 Rails 中显示数据库中的所有患者。我收到一个期望关键字 do 的错误。但确实在这里。

有什么建议吗?

/home/ubuntu/workspace/shc-pms/app/views/patients/index.html.erb:16: 语法错误,意外的 tSYMBEG,需要关键字_do 或 '{' 或 '(' },方法 :delete ) ;@output_buffer.safe_append=' ^

<div class="patients">
    <% @patients.each do |patient| %>
        <div class="patient">
            <h3><%= link_to patient.name, patient_path(patient) %></h3>
            <p><%= patient.age %></p>
            <!--<p><%= patient.phone %></p>-->
            <!--<p><%= patient.ailment %></p>-->
            <!--<p><%= patient.appointment %></p>-->
            <!--<p><%= patient.status %></p>-->
            <ul class="patient-action">
                <li><%= link_to "Edit", edit_patient_path(patient)  %></li>
                <li><%= link_to "Delete", patient_path(patient), data: {
                    confirm: "Are you sure you want to delete: #{patient.name}?",
                }, method :delete  %></li>
            </ul>
        </div>
    <% end %>
</div>

【问题讨论】:

  • 这可能无关紧要,具体取决于您的 ruby​​ 版本。但是“确认”消息后不需要逗号。
  • 不。那没有解决它
  • 我认为是 Ruby 2 包含了忽略尾随逗号的更改。无论如何,我相信我的回答会为您解决问题。

标签: ruby-on-rails


【解决方案1】:

问题是哈希键method后面没有冒号。

method :delete 替换为method: :delete


外围问题:删除调用以不寻常的方式跨行拆分。它不会阻止 ruby​​ 解释它,但它确实使它更难阅读。我建议将其更改为:

<li>
  <%= link_to(
        "Delete", 
         patient_path(patient), 
         data: {confirm: "Are you sure you want to delete: #{patient.name}?"}, 
         method: :delete
       ) %>
</li>

对于如何做到这一点存在意见分歧,但这是我的建议。

【讨论】:

  • 完美。谢谢
猜你喜欢
  • 2015-06-13
  • 2017-09-29
  • 2020-03-09
  • 1970-01-01
  • 1970-01-01
  • 2017-07-09
  • 2014-10-14
  • 1970-01-01
  • 2016-11-08
相关资源
最近更新 更多