Ruby on Rails:将参数传递给View

时间:2015-08-13 15:26:26

标签: ruby-on-rails ruby routes params

当用户在我的Rails应用程序中向url / mobile发出请求时,我希望将一个参数自动附加到请求后加载的URL(类似/mobile?tree_width=5

我尝试了一些事情,但都没有效果。

我得到的最接近的是我的控制器:

  def mobile
    respond_to do |format|
        format.html{
             # pass tree width here
             render mobile_project_steps_path(@project, :tree_width => @project.tree_width)
        }        
    end
  end

我收到错误

Missing template /projects/8/steps/mobile?tree_width=5 

但我认为这条道路应该根据我的佣金路线存在:

mobile_project_steps GET      /projects/:project_id/steps/mobile(.:format)                    steps#mobile

如何从控制器向URL添加参数?

1 个答案:

答案 0 :(得分:3)

您需要检查参数是否丢失以及是否重定向到具有额外参数的当前操作。我会在before_action中挤压它:

  before_action :check_tree_width, only: :mobile

  def mobile
    # Your actual logic
  end

  private

  def check_tree_width
    redirect_to(tree_width: @project.tree_width) unless params[:tree_width].present?
  end