Rails 5种子数据库mail_to地址转换报错问题求助
Rails 5中mail_to标签的语法修正方案
嘿,我帮你排查下这个语法错误的问题~你代码里的核心问题是在ERB标签中嵌套了多余的<%= %>,导致Rails无法正确解析Ruby代码。我结合你的使用场景,给你两种正确的写法:
场景1:展示单个管理员的资料(@admin是单个实例)
从你最初的代码<h4><%= @admin.email %></h4>来看,@admin应该是单个Admin对象(比如在show页面),这种情况不需要用each循环,直接替换成mail_to方法即可:
<h4><%= mail_to @admin.email, @admin.email %></h4>
甚至可以简化写法——当mail_to只传一个参数时,会自动把邮箱地址作为链接显示文本:
<h4><%= mail_to @admin.email %></h4>
场景2:展示多个管理员的列表(@admin是集合)
如果你确实需要遍历多个管理员(比如index页面),那each循环是对的,但要去掉嵌套的<%= %>标签——在ERB的<%= %>内部,直接写Ruby变量即可,不需要再套一层输出标签:
<% @admin.each do |agent| %> <h4><%= mail_to agent.email, agent.email %></h4> <% end %>
为什么你的代码会报错?
你原来的代码里写了mail_to <%= agent.email %>,这相当于在Ruby代码中又插入了一个ERB输出标签,这是语法错误。ERB的<%= %>本身就是用来执行Ruby代码并输出结果的,内部属于Ruby代码环境,直接使用agent.email这个变量就可以了,不需要额外嵌套<%= %>。
内容的提问来源于stack exchange,提问作者Boucherie
相关产品推荐
相关产品推荐

