我不确定如何表达这个,但这是用例:
在我的 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要显示哪些?
答案 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]
在控制器中设置变量,最后在视图中使用它来选择要渲染的一个或另一个列表。您应该在没有路由更改的情况下获得此行为。