【发布时间】: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 张纸。
-
有了这个
<%= s.radio_button :plan_id, plan.id,:checked => (plan == @plans.first) %>,您总是选择第一个计划。尝试在控制器中设置像@selected_plan_id = params[:plan_id]这样的变量,然后将行更改为<%= s.radio_button :plan_id, plan.id,:checked => (plan.id == @selected_plan_id || ( !@selected_plan_id && plan == @plans.first)) %>。 -
谢谢@fanta。通过菜单中的 /join-the-club 链接时,它似乎工作得很好,第一个计划仍然被选中。从首页上的定价计划中选择计划时,未选择任何单选按钮。我觉得我很接近了……也许我把变量放在了错误的地方。我把它放在控制器的“def new”部分。
-
正在执行的操作是什么?,将变量放入该操作中。某处是否发生了重定向?.
-
@fanta 的解决方案不太奏效的原因可能是
@selected_plan_id是一个字符串,而plan.id是一个整数。试试@selected_plan_id.to_i。
标签: javascript jquery html mysql ruby-on-rails