gpt4 book ai didi

ruby-on-rails - 带有复选框的 Rails form_tag

转载 作者:数据小太阳 更新时间:2023-10-29 08:51:03 26 4
gpt4 key购买 nike

我知道可能有 1 或 2 个类似的问题,但没有一个能帮助我理解我在下面的错误地方。在我看来,我有以下 haml 形式:

= form_tag movies_path,:id=>"ratings_form", :method => :get do
Include:
- @all_ratings.each_with_index do |rating, index|
= rating
= check_box_tag "ratings[]", rating, @selected_ratings.include?(rating), id:"ratings_#{rating}"

在我的 Controller 中:

def index
sorting=params[:sorting_on_a_column]
if sorting=='1'
@sort='title'
@movies=Movie.order('title')
elsif sorting=='2'
@sort='date'
@movies=Movie.order('release_date')
else
@movies=Movie.all
end
@all_ratings=Movie.select(:rating).map(&:rating).uniq
@selected_ratings = (params["ratings"].present? ? params["ratings"] : @all_ratings)
@movies = @movies.where(":rating IN (?)", params["ratings"]) if params["ratings"].present? and params["ratings"].any?
end

我上面的目标是按标题或发布日期(它确实如此)对电影进行排序,并且只显示与选中的复选框相对应的电影。我是 Ruby 和 Rails 的新手,所以非常感谢你的帮助。提前致谢!

最佳答案

一些需要考虑的事情:

1 - 有多少种可能的评级?您正在分配 @all_ratings基于出现在另一个模型的数据库表中的内容。如果没有评级模型,并且完整的评级列表会随着时间的推移而增长,那么可能应该有。

2 - 您可以像这样设置复选框标签:

- @all_ratings.each_with_index do |rating, index|
= label_tag "rating_#{rating}", rating
= check_box_tag "ratings[]", rating, @selected_ratings.include?(rating), id: "rating_#{rating}"

这将为您提供 params["ratings"] 中的字符串值数组这应该在您的代码中按原样工作。

label 标记被设置为当您单击文本时,它会选中相应的复选框。 .each_with_index用于为每个评级提供唯一 ID,因为截至目前,数据库中没有一个(它与 "rating_#{index}" 中的 check_box_tag id 声明相匹配)。

关于ruby-on-rails - 带有复选框的 Rails form_tag,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12875392/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com