【问题标题】:Creating custom url from form parameters从表单参数创建自定义 url
【发布时间】:2015-12-05 01:15:00
【问题描述】:

我目前正在开发一种工具,它采用表单输入标签并根据这些输入生成页面

我的表格如下:

<%= form_tag({:action => "show", :controller => "tool"}) do %>
  ....
  ....
  ....
<% end %>

在我的控制器中,我有这样的 show 方法:

  def show
    param1 = params[:param1]
    param2  = params[:param2]
    param3  = params[:param3]
    param4  = params[:param4]

    #process params

  end

然后我有我的 show.html.erb 来处理 show 方法。为此,我的

routes.rb:

  match "/tool" => "tool#index"
  match "/tool/show/" => "tool#show"

我希望 url 显示所有参数,例如 /tool/param1/param2/... 而不仅仅是 /tool/show/。我尝试将以下内容添加到路线中

match "/tool/show/:param1/:param2" => "tool#show"

但它会搞砸,因为我的表单只调用show。我将如何仅使用show 方法创建包含所有参数的链接,并且在提交表单后生成参数

【问题讨论】:

    标签: html ruby-on-rails parameters routes


    【解决方案1】:

    您是否需要将参数用斜杠分隔,或者使用GET 参数的常用方法可以吗?例如,像这样:

    /posts/5?email=def&message=ghi&name=abc

    您可以使用您的 URL 帮助程序通过如下代码创建这样的链接:

    <%= link_to "link text", post_path(name: @post.name, email: @post.email, message: @post.message) %>
    

    【讨论】:

    • 抱歉,对 ruby​​ 来说超级新手,是否可以向我展示上面是如何使用 form_tag 的?我需要在 routes.rb 中更改什么?
    • 我不确定你的意思。您的表单在您的new.html.erb 视图中吗?
    • 它在 index.html.erb 中,并且表单正在调用使用 show.html.erb 的 show
    • 你的param1param2等值是从哪里来的?
    • 从 index.html.erb 中的表单,然后在 show 方法中我得到它们并处理 show.html.erb
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-07
    • 1970-01-01
    相关资源
    最近更新 更多