【问题标题】:Pass hidden field tag params with rails 5使用 rails 5 传递隐藏字段标签参数
【发布时间】:2017-08-08 12:46:27
【问题描述】:

views/plans/new.html.erb 我得到 plan_id 和 price 参数,内容如下:

<%= link_to "Sign up", new_store_registration_path(:plan_id => plan.id, :price => plan.price) %>

然后应用程序重定向到注册页面,并使用以下内容保留以前的参数并添加电子邮件:

registrations_controller.rb

def after_sign_up_path_for(resource)
  new_transaction_path(session[:registration_params].merge(ema‌​il: resource.email))
end

def after_inactive_sign_up_path_for(resource)
  new_transaction_path(session[:registration_params].merge(ema‌​il: resource.email))
end

最后在注册后,应用重定向到views/transcation/new.html.erb,它有plan_idpriceemail参数。

Parameters: {"ema‌​il"=>"example@gmail.com", "plan_id"=>"bs96", "price"=>"150.0"}

此时我正在尝试使用&lt;%= hidden_field_tag(:email, params["email"]) %&gt; 将电子邮件参数传递给事务

但没有收到电子邮件,如下所示:

Parameters: {"utf8"=>"✓", "authenticity_token"=>"KeS2xK7NIJZwFQvW2kJKupcpURnQweq+yoRgk9AJ1aaOgFIIym4RKadI4jc6vYynMo4vKR4eLmdIynfBG+EusQ==", "email"=>"", "plan_id"=>"bs96", "amount"=>"150.0", "payment_method_nonce"=>"0c22f2fa-e212-0ad3-753b-0d183d02522b"}

关于我做错了什么有什么想法???

更新1

在views/transcation/new.html.erb里面有ui和脚本中的braintree drop以及三个隐藏字段:

<div class="form-container radius-box glassy-bg small-10 small-centered medium-8 large-6 columns">
  <%= form_tag transactions_path do%>
      <div id="dropin"></div>
      <%= hidden_field_tag(:email, params["email"]) %>
      <%= hidden_field_tag(:plan_id, params["plan_id"]) %>
      <%= hidden_field_tag(:amount, params["price"]) %>
      <%=submit_tag "Pay #{params["price"]}$", class: "button mt1" %>
  <%end%>
</div>

<script>
    braintree.setup("<%=@client_token%>", 'dropin', {
        container: 'dropin'
    });
</script>

【问题讨论】:

  • 您在该表单中是否有另一个名为“email”的字段?如果params['email'] 做到了那么远,并且您可以在检查应提交的页面时看到隐藏字段中的值......但是,如果 rails 在解析时多次遇到相同的名称,它使用最后一个它遇到的一个(数组参数的例外)
  • 可以分享views/transcation/new.html.erb的内容吗?
  • @Satishakumar Awati 请查看更新 1 了解更多详情!
  • 您不应依赖隐藏字段标签的值(最终用户可以轻松更改),而应使用可以从数据库中获取的值。正如您所说,最终用户被要求注册,然后被重定向到您要使用这些 hidden_​​field_tag 的地方。也许您可以使用记录,例如Plan,来确定价格和电子邮件值是多少?因为使用此代码,任何最终用户都可以编辑 HTML 并更改交易的价格和/或电子邮件
  • 感谢@Simple Lime 的回复,不,我没有该表单中的另一个电子邮件字段!我已经上传了views/transcation/new.html.erb...请查看更新1了解更多详情!

标签: ruby-on-rails ruby ruby-on-rails-4


【解决方案1】:

请设置隐藏字段的值,如:

<%= f.hidden_field :email, :value => "test@test.com" %>

<%= f.hidden_field :email, :value => @object.email %>

【讨论】:

  • 感谢@Yogesh Waghmare 的回复...第一个返回电子邮件 test@test.com 如果我使用第二个&lt;%= hidden_field :email, :value =&gt; @store.email %&gt; 它返回undefined method email for nil:NilClass.. 他们都没有f.
【解决方案2】:

希望你没有混淆。

<%= hidden_field_tag "email", params[:email] %>

hidden_field_tagform_tag 一起使用

<%= f.hidden_field "email", params[:email] %>

并且f.hidden_fieldform_for 一起使用

【讨论】:

  • @Satishakumar Awatii 请查看更新 1 了解更多详情!
【解决方案3】:

在 ruby​​ on rails 视图中添加隐藏字段有两个标签

  1. hidden_field
  2. hidden_field_tag

带有隐藏字段的rails视图表单

&lt;% form_for(:request, :url =&gt; requests_path) do |f| %&gt;

`<div class="actions">`
    <%= f.hidden_field :column_name %>
    <%= hidden_field_tag 'selected', 'column_name' %>
    <%= f.submit e %>
</div>

`

控制器代码:

 params[:selected]="column_name"
 params[:request][:column_name] = request.column_name

当我们使用 f.hidden_​​field 时:

<%= f.hidden_field :column_name %>

改为html:

<input type="hidden" id="request_column_name" name="request[column_name]" value="#{@request.column_name}" />

当我们使用 hidden_​​field_tag 时

<%= hidden_field_tag 'selected', 'column_name' %>

改为html:

<input id="selected" name="selected" type="hidden" value="none"/>

我们可以像这样为您的模型发送一个自定义值作为隐藏输入:

<%= f.hidden_field :model_field_name, value: 12 %>

【讨论】:

    猜你喜欢
    • 2017-11-16
    • 2014-02-07
    • 2012-11-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-02
    • 2020-11-16
    • 1970-01-01
    相关资源
    最近更新 更多