有条件地在Rails中显示选择值

时间:2014-04-18 01:35:01

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

我不确定如何表达这个,但这是用例:

在我的 accounts.rb 模型中,我有:

Account_Types = ["Checking", "Savings"]

因此,当用户在视图中选择该帐户类型时,它会被标准化:

<div class="field">
    <label>Type of Account
    <p>Checking or Savings</p></label>
    <%= f.select(:accounttype, Account::Account_Types) %>
  </div>

基本上,我想将Account_Types分成两部分:

Savings_Account_Types = ["Checking", "Savings"]
Retirement_Account_Types = ["401k", "Roth IRA"]

我的问题:当我链接到视图时..

<%= link_to(new_account_path) do %>

是否有方法/语法传递一个变量,该变量会告诉模型_Account_Type要显示哪些?

2 个答案:

答案 0 :(得分:0)

向路线添加变量

路线

match '/accounts/:account_type/new', to:'accounts#new', via: :get 

在视图中

<%= link_to new_account_path("Savings") %>
# /accounts/Savings/new

在控制器

account_types = Account.send("#{params[:account_type]_Account_Type")

答案 1 :(得分:0)

对于公共部分,可能更好的做法是使用两个单独的控制器/视图和部分。

但是,你可以做你想做的事。如果你说

<%= link_to new_account_path(:account_type => :savings) do %>

然后URL将是:

accounts/new?account_type=savings

在控制器操作new中,您可以使用params[:account_type]在控制器中设置变量,最后在视图中使用它来选择要渲染的一个或另一个列表。您应该在没有路由更改的情况下获得此行为。