【问题标题】:Ruby on Rails: How to add additional params to button_to :back?Ruby on Rails:如何向 button_to :back 添加额外的参数?
【发布时间】:2012-12-08 22:36:52
【问题描述】:

我正在为课程做一个 Rails 项目,用户可以在其中输入搜索词,显示结果(图像),然后用户可以单击图像以获取更大的版本。

在较大的版本页面上,我有一个 button_to :back。

<%= button_to "Back", :back %>

但是当我点击按钮时,它返回的图像结果页面显示默认图像,而不是搜索返回的图像。我需要能够将 params[:search_term] 传递回上一页(因为没有 :search_term 值,则返回默认图像)。

我试过了:

<%= button_to "Back", :back, :search_term => params[:search_term] %>

而且在查看页面源码的时候,好像应该把参数传回去:

   <form action="http://localhost:3000/albums/7/add" class="button_to" method="post">
   <div>
   <input search_term="puppy" type="submit" value="Back" />
   <input name="authenticity_token" type="hidden" value="lkjsakvgjwhatever" />
   </div></form>

真实性令牌被返回,但我的 search_term 没有。

编辑:

这是视图:

<%= image_tag("http://farm#{@pic["farm"]}.staticflickr.com/#{@pic["server"]}/#{@pic["id"]}_#{@pic["secret"]}_c.jpg") %>
<br><br>
<%= @pic["title"] %>'

<br><br>
<br><br>

<%= button_to "Back", :back, {:search_term=> params[:search_term]} %>

【问题讨论】:

  • api.rubyonrails.org/classes/ActionView/Helpers/…,我之前没用过button_to,但是看例子,尝试使用路径,比如back_path(params[:search_term]) 并添加匹配的路径跨度>
  • 另外,在选项中,您可以传递类似 {:data => :search_term=> params[:search_term]} 的内容以获取其他属性

标签: ruby-on-rails parameters back button-to


【解决方案1】:

使用params 选项将哈希值添加为隐藏字段:

= button_to "Back", :back, params: { search_term: params[:search_term] }

将产生:

<form action="/back" class="button_to" method="post">
    <div>
        <input type="submit" value="Back" />
        <input name="authenticity_token" type="hidden" value="uSCQbSaZdbIrTD2Z2FA0FQNe5CF+tK/jViInc1b7Kb0=" />
        <input name="search_term" type="hidden" value="whatever" />
    </div>
</form>

【讨论】:

    【解决方案2】:

    您必须更改表单的操作。像这样的

    <%= form_for(@model, :url => 'YOURURL',  :method => 'get') do %>
    

    【讨论】:

    • 没有办法简单的给button_to添加参数吗?
    • 可以粘贴视图,请
    • 而查看单张图片时,参数如下:{"pic"=>{"farm"=>"9", "id"=>"8254283877", "isfamily"=> "0", "isfriend"=>"0", "ispublic"=>"1", "owner"=>"26742588@N04", "secret"=>"2e1e383879", "server"=>"8211" , "title"=>"OH HEY!"}, "search_term"=>"puppy", "action"=>"single", "controller"=>"public_pages"}
    • 所以我只想获取 params[:search_term] 并在按下 Back 按钮时将其传回。
    • 对不起,伙计,我认为您必须创建一个类似这样的链接 并将链接设置为按钮,因为我不确定如果你可以在没有 javascript 的情况下做到这一点
    【解决方案3】:

    据我所知,button_to "Back", :back 将是一个 javascript 代码,例如:javascript:history.back(),因此您应该自己定义返回 url,而不是使用 UrlHelper 的默认 :back

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-04-04
      • 2013-07-20
      • 2010-12-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多