【发布时间】:2014-01-31 04:00:49
【问题描述】:
我正在尝试使一系列链接正常工作。有些应该是可切换的,有些则不是。
基本上在重新加载页面时,我的 params 哈希已经有两个不应该有的键,我看不到它们被添加到哪里。
我的链接:
<ul class="all filter__group">
<li><%= link_to "View all", coasters_path(page: 1), remote: true %></li>
</ul>
<ul class="types filter__group">
<%= content_tag(:li, class: ("active" if params[:type] == "steel")) do %>
<%= link_to "Steel", coasters_path(type_parameters("steel", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:type] == "wood")) do %>
<%= link_to "Wood", coasters_path(type_parameters("wood", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:type] == "powered")) do %>
<%= link_to "Powered", coasters_path(type_parameters("powered", page: 1)), remote: true %>
<% end %>
</ul>
<ul class="letters filter__group">
<%= content_tag(:li, class: ("active" if params[:letters] == "#")) do %>
<%= link_to "#", coasters_path(letter_parameters("#", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:letters] == "a-e")) do %>
<%= link_to "A-E", coasters_path(letter_parameters("a-e", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:letters] == "f-j")) do %>
<%= link_to "F-J", coasters_path(letter_parameters("f-j", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:letters] == "k-o")) do %>
<%= link_to "K-O", coasters_path(letter_parameters("k-o", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:letters] == "p-t")) do %>
<%= link_to "P-T", coasters_path(letter_parameters("p-t", page: 1)), remote: true %>
<% end %>
<%= content_tag(:li, class: ("active" if params[:letters] == "u-z")) do %>
<%= link_to "U-Z", coasters_path(letter_parameters("u-z", page: 1)), remote: true %>
<% end %>
</ul>
<%= debug params %>
辅助方法:
# Add the type parameter to URL if not already there and remove if they are
def type_parameters(type, options = {})
parameters = {}
if params[:type] == type
# Get exisiting params
parameters = params
# Remove type
parameters.delete(:type)
# Merge any parameters passed in via options
parameters.merge!(options)
else
# Get exisiting params
parameters = params
#Add type to new parameters variable
parameters.merge!(type: type)
# Merge any parameters passed in via options
parameters.merge!(options)
end
parameters
end
# Add the letters parameter to URL if not already there and remove if they are
def letter_parameters(letters, options = {})
parameters = {}
if params[:letters] == letters
# Get exisiting params
parameters = params
# Remove letters
parameters.delete(:letters)
# Merge any parameters passed in via options
parameters.merge!(options)
else
# Get exisiting params
parameters = params
#Add letters to new parameters variable
parameters.merge!(letters: letters)
# Merge any parameters passed in via options
parameters.merge!(options)
end
parameters
end
在页面重新加载时,这是当前的参数哈希:
--- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
action: index
controller: coasters
type: powered
page: 1
letters: u-z
关于我哪里出错了有什么想法吗?
【问题讨论】:
-
你能告诉我们控制器的动作吗?
-
您确定没有重新加载包含
letters=u-z的网址吗? -
阳性。我刚刚尝试从新选项卡访问它。从头开始重新输入 URL,甚至在不同的浏览器中从头开始输入。
标签: ruby-on-rails ruby hash parameters hyperlink