【发布时间】:2019-12-03 02:19:53
【问题描述】:
我正在开发一个ruby on rails 应用程序,并且已经制作了一些核心元素,例如登录系统。但是,我正在尝试使用'erb' gem 创建一个注销按钮来加载文件并将它们包含在其他文件中,因此侧面的所有页面都有表单。但是,无论我如何编写 form_tag 元素,它都会引发语法错误,我不知道为什么。我在互联网上查看并粘贴了错误代码,但给出的解决方案仍然会引发相同的错误。
有什么帮助吗?
这里是代码:app/controllers/session_controller.rb(摘录):
require 'erb'
...
def home
@page_title = 'Home'
@topbarFile = File.read('file location') // not real
ERB.new(@topbarFile, 0, "", "@topbar").result( binding ) // working! no errors
if !session[:usrname].present?
redirect_to '/login'
end
if session[:message].present?
session.delete :message
end
end
def delete
if params[:commit].present?
session.delete :usrname
session.delete :id
redirect_to '/login'
end
end
end
app/file location(不是真实位置):
<div class = 'topbar'>
<% sessionState = session[:usrname].present? ? [session[:usrname]] : [] %>
<% logoutState = session[:usrname].present? ? [] : ['Log out'] %>
<% sessionState.each do |username| %>
<span class = 'username'><%= username %></span>
<%= form_tag({controller: :session, action: :delete}, :class => '--logout-form') do %>
<%= submit_tag 'Log out' %>
<% end %>
<% end %>
<% logoutState.each do |message| %>
<a href = '/login'><% message %></a>
<% end %>
</div>
app/views/session/home.html.erb:
<%= raw @topbar %> <!-- I have tried with raw(@topbar), still doesn't work -->
以下是错误:
(erb):6: syntax error, unexpected ')' ...:class => '--logout-form') do ).to_s); @topbar.<< "\n ... ... ^ (erb):8: syntax error, unexpected end, expecting ')' ; end ; @topbar.<< "\n ".freeze ^~~ (erb):9: syntax error, unexpected end, expecting ')' ; end ; @topbar.<< "\n ".freeze ^~~ (erb):13: syntax error, unexpected end-of-input, expecting ')'
Rails.root: xxx
Application Trace | Framework Trace | Full Trace
(erb):6: syntax error, unexpected ')'
(erb):8: syntax error, unexpected end, expecting ')'
(erb):9: syntax error, unexpected end, expecting ')'
(erb):13: syntax error, unexpected end-of-input, expecting ')'
(erb):6: syntax error, unexpected ')'
(erb):8: syntax error, unexpected end, expecting ')'
(erb):9: syntax error, unexpected end, expecting ')'
(erb):13: syntax error, unexpected end-of-input, expecting ')'
(erb):6: syntax error, unexpected ')'
(erb):8: syntax error, unexpected end, expecting ')'
(erb):9: syntax error, unexpected end, expecting ')'
(erb):13: syntax error, unexpected end-of-input, expecting ')'
app/controllers/session_controller.rb:65:in `home'
但是没有多余的括号!我不明白这个问题!为什么它不起作用?
PS。为什么堆栈跟踪重复了这么多次?
【问题讨论】:
-
你可以尝试在类名中使用 " 而不是 '
-
你这是什么意思?
-
this :class=> '--logout-form' 这样写 :class=> "--logout-form" 在类名周围使用双引号而不是单引号。
-
在该上下文中使用 " 或 ' 没有区别
标签: html ruby-on-rails ruby backend