Rails 5 次搜索 gem,语法错误,意外的输入结束
Rails 5 ransack gem, syntax error, unexpected end-of-input
也许整天不停地编码我是瞎子,但我似乎找不到任何错误、遗漏的结尾或错误的输入。
我正在尝试在 rails 中使用搜查搜索 gem 5. 我的代码如下所示:
应用程序控制器:
class ApplicationController < ActionController::Base
before_filter :site_search
def site_search
@search = Post.ransack(params[:q])
@search_posts = @search.result(distinct: true)
end
end
Post控制器:
class PostsController < ApplicationController
def index
@search = Post.ransack(params[:q])
@posts = @search.result(distinct: true)
end
end
表格如下所示:
<div id="search">
<%= search_form_for @search do |f| %>
<%= f.search_field :title_or_body_cont, placeholder: 'Type to search' %>
<%= f.submit %>
<% end %>
</div>
错误如下所示:
/.../myapp/app/controllers/posts_controller.rb:6: syntax error, unexpected end-of-input, expecting keyword_end
Extracted source (around line #6):
4 @posts = @search.result(distinct: true)
5 end
6 end * Red line here, problem with this line i guess *
Request
Parameters:
{"utf8"=>"✓", "q"=>{"title_or_body_cont"=>"e"}, "commit"=>"Search"}
单击搜索按钮时发生崩溃。 site_search 方法有问题,因为当它在控制器中时,所有其他 Post 类 方法也会崩溃(同样的错误),但是如果我删除 site_search 方法,那么所有其他方法都可以正常运行。
感谢 Andrey 和 Max,在我重写 class 中的所有内容后,它开始工作了。 ruby -w 显示:
app/controllers/posts_controller.rb:10: warning: mismatched indentations at 'end' with 'def' at 2
app/controllers/posts_controller.rb:10: syntax error, unexpected end-of-input, expecting keyword_end
这是唯一的警告,所以我想崩溃不应该发生。嗯,我想这是编程。继续。
发生这种情况是因为在您的帖子控制器第 5 行的末尾,在换行符之前,您有 Unicode character 65279, ZERO WIDTH NO-BREAK SPACE。此字符与 end
中的 d
直接相邻。我不能说解释器在不同版本的 Ruby 中处理异常空白字符的确切决定,但我猜测它正在解释你的 end*
(*
代表不可见字符)作为一个四字母标识符,将被解释为变量名或方法调用,而不是三字母关键字 end
.
也许整天不停地编码我是瞎子,但我似乎找不到任何错误、遗漏的结尾或错误的输入。
我正在尝试在 rails 中使用搜查搜索 gem 5. 我的代码如下所示:
应用程序控制器:
class ApplicationController < ActionController::Base
before_filter :site_search
def site_search
@search = Post.ransack(params[:q])
@search_posts = @search.result(distinct: true)
end
end
Post控制器:
class PostsController < ApplicationController
def index
@search = Post.ransack(params[:q])
@posts = @search.result(distinct: true)
end
end
表格如下所示:
<div id="search">
<%= search_form_for @search do |f| %>
<%= f.search_field :title_or_body_cont, placeholder: 'Type to search' %>
<%= f.submit %>
<% end %>
</div>
错误如下所示:
/.../myapp/app/controllers/posts_controller.rb:6: syntax error, unexpected end-of-input, expecting keyword_end
Extracted source (around line #6):
4 @posts = @search.result(distinct: true)
5 end
6 end * Red line here, problem with this line i guess *
Request
Parameters:
{"utf8"=>"✓", "q"=>{"title_or_body_cont"=>"e"}, "commit"=>"Search"}
单击搜索按钮时发生崩溃。 site_search 方法有问题,因为当它在控制器中时,所有其他 Post 类 方法也会崩溃(同样的错误),但是如果我删除 site_search 方法,那么所有其他方法都可以正常运行。
感谢 Andrey 和 Max,在我重写 class 中的所有内容后,它开始工作了。 ruby -w 显示:
app/controllers/posts_controller.rb:10: warning: mismatched indentations at 'end' with 'def' at 2
app/controllers/posts_controller.rb:10: syntax error, unexpected end-of-input, expecting keyword_end
这是唯一的警告,所以我想崩溃不应该发生。嗯,我想这是编程。继续。
发生这种情况是因为在您的帖子控制器第 5 行的末尾,在换行符之前,您有 Unicode character 65279, ZERO WIDTH NO-BREAK SPACE。此字符与 end
中的 d
直接相邻。我不能说解释器在不同版本的 Ruby 中处理异常空白字符的确切决定,但我猜测它正在解释你的 end*
(*
代表不可见字符)作为一个四字母标识符,将被解释为变量名或方法调用,而不是三字母关键字 end
.