params不会检索erb中传递的任何内容

时间:2011-10-19 14:29:57

标签: ruby-on-rails ruby-on-rails-3.1

以下是index.html.erb中的代码:

  <%= link_to 'Back', '/url_handler?url=@return_to&index=0' %>

以下是routes.rb中

  match '/url_handler', :to => 'application#url_handler'

以下是应用程序控制器中url_handler的代码:

  def url_handler
    url = params[:url]  
    index = params[:index] 

    if index == 1 then
      step_forward(url)
    elsif index == 0 then
      step_back
    end

    redirect_to url
  end

  private

  #record path to current page
  def step_forward(current_path)
    session[:page_step] += 1
    session[('page' + session[:page_step].to_s).to_sym] = current_path if session[:page_step] > 1
  end

  #return link for previous page in page step
  def step_back
    session[:page_step] -= 1
  end

问题是url_handler中的2个params不检索@return_to,并且在index.html.erb中传递了0。 @return_to在传递时具有有效值。

问题的任何解决方案?感谢。

1 个答案:

答案 0 :(得分:1)

<%= link_to 'Back', '/url_handler?url=@return_to&index=0' %>

应该是

<%= link_to 'Back', "/url_handler?url=#{@return_to}&index=0" %>

注意双引号和return_to

检查日志文件log / development.log以查看在params中传递的值