gpt4 book ai didi

ruby-on-rails - Rails - 在重定向时将变量传递给不同的页面

转载 作者:太空宇宙 更新时间:2023-11-03 18:06:34 25 4
gpt4 key购买 nike

如果您能提供帮助,我们将不胜感激。我将 pg_search 添加到我的项目中,如果根本没有搜索结果,则需要将用户重定向回来。这是我的搜索 Controller 。

/app/controllers/results_controller.rb

class ResultsController < FrontendController
def index
@search_results = PgSearch.multisearch(params[:query])
if @search_results.empty?
redirect_to :back(@search_results)
end
end
end

这是我试图捕获搜索结果的布局:

/app/views/layouts/application.html.slim
...
.search-result class="#{'visible' unless @search_results?}
' 0 results
...

我得到的只是

/app/views/layouts/application.html.slim:165: syntax error, unexpected ')' ...isible' unless@search_results?))).to_s)); _temple_html_attri... ... ^ 
/app/views/layouts/application.html.slim:168: syntax error, unexpected keyword_do_cond, expecting ')' ...method: :get, role: 'search' do; ... ^
/app/views/layouts/application.html.slim:171: syntax error, unexpected keyword_end, expecting ')' ; end; @output_buffer.safe_concat(... ^ /app/views/layouts/application.html.slim:194: syntax error, unexpected keyword_ensure, expecting ')'
/app/views/layouts/application.html.slim:196: syntax error, unexpected keyword_end, expecting ')'

我从 Stackoverflow 获得了几种不同的方法,但没有任何帮助。我究竟做错了什么? rails 4.2.5.1, ruby 2.2.3

最佳答案

不要重定向回来。而是呈现一个 View ,告诉用户没有搜索结果。否则,当您点击后退按钮时,您会陷入无限循环。

class ResultsController < FrontendController
def index
@search_results = PgSearch.multisearch(params[:query])
end
end

# app/views/results/index.html
<% if @search_results.any? do %>
<% @search_results.each do |r| %>

<% end %>
<% else %>
No results.
<%= render 'some_kind_of_form' %>
<% end >

为什么语法错误?

redirect_to :back:back 是一个文字符号。你不能在 Ruby 中调用文字:

irb(main):001:0> :foo("bar")
SyntaxError: (irb):1: syntax error, unexpected '(', expecting end-of-input
:foo("bar")

如果你想增加 url 使用 url_for(:back) 这与 request.referrer 相同。

# see https://ruby-doc.org/stdlib-2.1.2/libdoc/uri/rdoc/URI/HTTP.html
uri = URI(url_for(:back))
uri.query = { foo: 'bar' }.to_query
redirect_to uri

如果你想获取路由对象你可以这样做:

Rails.application.routes.recognize_path(url_for(:back), method: :get)

关于ruby-on-rails - Rails - 在重定向时将变量传递给不同的页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44150568/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com