【问题标题】:How do I select a radio button via a link in Rails 5?如何通过 Rails 5 中的链接选择单选按钮?
【发布时间】:2016-11-29 16:43:32
【问题描述】:

也许这根本不可能,或者我想太多了。我已经尝试在 StackOverflow 上搜索这个特定的东西,我已经在我的 RubyDevelopers slack 小组中寻求帮助,并且我已经在 Codementor.io 上支付了帮助,但我仍然无法让它工作。

这看起来很接近,但没有解决方案:How to use JQuery to preselect radio button on page redirect in Rails

我正在 Rails 5 中构建一个 SaaS 网站,在主页(主控制器)上,我列出了您的标准定价计划。对于每个“立即加入”按钮,我已链接到注册页面并在 url 中包含计划 ID,例如:/join-the-club?plan_id=9。我什至试着把 /join-the-club?plan_id=9,checked=true, /join-the-club?plan_id.to_s=9 (有人对 slack 的建议)。

在注册页面(用户控制器)上,还有与单选按钮相同的定价计划列表。这样做的原因是因为访问此页面的方法不止一种。菜单中还有一个链接,上面写着“加入俱乐部”,可将他们带到同一页面。无论如何,如果有人点击主页定价表中的“立即加入”按钮之一,我希望自动选择正确的单选按钮。

好的,现在是代码。这是我主页视图上的链接:

<div class="table-body">
  <a href="/join-the-club?plan_id=9"><button class="s1-button">JOIN NOW</button></a>
</div>

然后是注册页面上的计划代码:

<% @plans.each do |plan| %>
  <tr>
    <td class="product-in-table">
     <%= s.label :plan_id, plan.name, :value => plan.id do %>
     <img class="img-responsive" src="assets/qva/cube.jpg" alt="">
     <div class="product-it-in">
      <h3><%= plan.name%></h3>
      <span><%= plan.size %></span>
     </div>
     <% end %>
    </td>
    <td>$ <%= plan.price / 100 %></td>
     <td class="shop-red">Monthly</td>
      <td>
       <%= s.radio_button :plan_id, plan.id,:checked => (plan == @plans.first) %>
      </td>
   </tr>
 <% end %>

这是我检查单选按钮时的 html:

<input type="radio" value="9" checked="checked" name="user[subscriptions][plan_id]" id="user_subscriptions_plan_id_9">

如果你想知道“s”是什么,那就是:

<%= f.fields_for :subscriptions do |s| %>

因此,如果有人通过顶部菜单链接 /join-the-club 进入注册页面,则第一个计划选项已被选中。他们只需要离开它或选择另一个计划。但如果他们通过定价表进来,我需要选择正确的计划。 :)

据我了解,在 URL 中传递参数只是使其准备好保存该 db 列。

【问题讨论】:

  • 哇,这是一个很长的问题。你确定你不能让它更短吗?人们很懒惰,他们不想读 5 张纸。
  • 有了这个&lt;%= s.radio_button :plan_id, plan.id,:checked =&gt; (plan == @plans.first) %&gt;,您总是选择第一个计划。尝试在控制器中设置像 @selected_plan_id = params[:plan_id] 这样的变量,然后将行更改为 &lt;%= s.radio_button :plan_id, plan.id,:checked =&gt; (plan.id == @selected_plan_id || ( !@selected_plan_id &amp;&amp; plan == @plans.first)) %&gt;
  • 谢谢@fanta。通过菜单中的 /join-the-club 链接时,它似乎工作得很好,第一个计划仍然被选中。从首页上的定价计划中选择计划时,未选择任何单选按钮。我觉得我很接近了……也许我把变量放在了错误的地方。我把它放在控制器的“def new”部分。
  • 正在执行的操作是什么?,将变量放入该操作中。某处是否发生了重定向?.
  • @fanta 的解决方案不太奏效的原因可能是@selected_plan_id 是一个字符串,而plan.id 是一个整数。试试@selected_plan_id.to_i

标签: javascript jquery html mysql ruby-on-rails


【解决方案1】:

感谢@fanta 和@Brad 这就是答案:

因为我需要在创建新用户时发生这种情况,所以我在用户控制器的“def new”下添加了变量:

@selected_plan_id = params[:plan_id]

然后在视图中,我将单选按钮代码更改为如下所示:

<%= s.radio_button :plan_id, plan.id, :checked => (plan.id == @selected_plan_id.to_i || ( !@selected_plan_id && plan == @plans.first)) %>

因此,如果有人仅使用“/join-the-club”链接,则将选择第一个计划,但如果他们使用定价表中的“/join-the-club?plan_id=x”等链接之一将参数添加到链接后,将在注册页面上选择正确的计划单选按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-11-30
    • 1970-01-01
    • 2011-07-04
    • 1970-01-01
    • 2016-11-14
    • 2012-10-29
    • 1970-01-01
    • 2023-03-24
    相关资源
    最近更新 更多