Rails:将params从URL传递到视图而无需查找数据库

时间:2015-07-08 02:59:09

标签: ruby-on-rails ruby-on-rails-4.2

我有一个像example.com/test/THIS_TEXT这样的网址。现在,当用户访问我的URL时,我只想使用" THIS_TEXT"部分在其路由的html.erb视图内部。

我知道它不再是MVC,但我试图通过使该过程独立于模型和数据库来避免一些开销。有没有一种简单的方法可以直接将URL参数传递给Rails中查看?

更新:

部分代码:

的routes.rb

get "/d/:token", to: "games#show"

games_controller.rb

class GamesController < ApplicationController
    before_action :set_game, only: [ :edit, :update, :destroy]

    def show
        @text = params["token"]
    end
    #other scaffold stuff...
end

show.html.erb

Your entered text is <%= @text %>

错误

ActionController :: GamesMtroller中的ParameterMissing#show

param丢失或值为空

3 个答案:

答案 0 :(得分:2)

您如何在THIS_TEXT文件中声明routes.rb

如果if声明为

get '/test/:this_text'(请注意:

然后您可以在控制器中以params[:this_text]的形式访问它。

这样:

# in routes.rb 

get '/test/:test_text', to: 'tests#show_text'

# in tests_controller.rb

class TestsController < ApplicationController

  def show_text
    @text = params[:test_text]
  end
end

希望有所帮助!

答案 1 :(得分:1)

您可以访问params hash,执行以下操作:

<%= params[:name_of_param] %>

param的名称与您在routes.rb中的名称相同

答案 2 :(得分:0)

在您的控制器中:

@users_param = params[:users_param]

在您看来:

  

任何不安全的字符都应该自动转义,但可能会很长。这不会触及模型或数据库。它也不是特别反MVC,它恰好不使用该模型。打破MVC会做类似于从.html.erb文件执行数据库查询的事情。