我有以下表格
<%= form_for :key, url: unblock_keys_path, :html => {:method => :get} do |f| %>
<%= f.text_field :value %>
<%= button_to "Unblock", method: :get %>
<% end %>
当我在文本框中输入键值时,哪个工作正常。但我希望用户也可以直接从网址访问端点。
此时此请求生成的params
为:
{“utf8”=&gt;“✓”,“key”=&gt; {“value”=&gt;“x0vdPYWb9nAfyNjFS-UAGQ”}, “authenticity_token”=&gt; “中+ Oi45DHYpPAiNbKrw5kNjWMVrQgCyLsBkhVb7huB0dr + XM / oKXxzTShajVUYEWxl9qlFLfjWsP4C4JM30DTGoA ==”, “controller”=&gt;“keys”,“action”=&gt;“unblock”}
网址:http://localhost:3000/keys/unblock?utf8=✓&key%5Bvalue%5D=x0vdPYWb9nAfyNjFS-UAGQ&authenticity_token=%2BOi45DHYpPAiNbKrw5kNjWMVrQgCyLsBkhVb7huB0dr%2Bxm%2FoKXxzTShajVUYEWxl9qlFLfjWsP4C4JM30DTGoA%3D%3D
我希望能够访问localhost:3000/keys/unblock?<key_value>
我需要在请求和路线中进行哪些更改?
答案 0 :(得分:0)
此localhost:3000/keys/unblock?<key_value>
不是有效的网址*。 ?
表示参数的开始,之后的所有内容都需要具有“name = value”形式,并与“&amp;”结合。
你的意思是localhost:3000/keys/unblock/<key_value>
?
如果是,那么添加像
这样的路线get '/keys/unblock/:value', to: 'keys#unblock'
这会将/keys/unblock/foo
发送到您的取消屏蔽操作,params[:value] = "foo"
*注意 - 从技术上讲,它不是非法的,但它的形成很差,几乎肯定不是你想要做的。