Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ruby-on-rails-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 3 使用多个参数配置rails3路线_Ruby On Rails 3_Routes_Url Routing - Fatal编程技术网

Ruby on rails 3 使用多个参数配置rails3路线

Ruby on rails 3 使用多个参数配置rails3路线,ruby-on-rails-3,routes,url-routing,Ruby On Rails 3,Routes,Url Routing,我拥有的 match "/home/markread/:id" => "books#markread" 去 def markread #mark params[:id] as read end 我想要什么 如果我想传递另一个参数,使URL看起来像 /home/markread/1/didread=read或/home/markread/1/didread=unread 因此,我的方法将更改为 def marked #mark params[:id] as params[:did

我拥有的

match "/home/markread/:id" => "books#markread"

def markread
  #mark params[:id] as read
end
我想要什么

如果我想传递另一个参数,使URL看起来像
/home/markread/1/didread=read
/home/markread/1/didread=unread

因此,我的方法将更改为

def marked
  #mark params[:id] as params[:didread]
end
问题


要实现这一点,我的
routes.rb应该是什么样子?

换成

match "home/markread/:id/used=:used" => "books#markread"

使用“as”选项为路由命名,并根据需要传递可选参数

例如:

match "/home/markread/:id" => "books#markread", :as => 'markread'
这将为您提供帮助程序,如,
markread\u path
markread\u url
。您可以传递
参数,如markread\u path(:id=>1,:other=>value'…)


无论是否传递了特定参数,都需要在控制器中检查该操作

在rails 4中,您将拥有:

    resources :home, only: :none do
      get 'markread/:another', action: :markread, on: :member
    end

GET/home/:id/markread/:另一个(:format)/home#markread

来自您提供的示例…我仍然能够传递多个参数吗?是。您可以传入任意数量的参数。决定在控制器中对它们执行什么操作。