gpt4 book ai didi

ruby-on-rails-3 - Rails 3 : Controller params default value

转载 作者:行者123 更新时间:2023-12-04 05:25:43 24 4
gpt4 key购买 nike

我正在使用一个远程form_for进行show操作,以根据此表单传递的参数来检索内容。

= form_tag  modelname_path(@modelname), :id=>"select_content_form", :remote => true, :method => 'get' do               
= text_field_tag :content_type, params[:content_type], :id=>"select_content_type"
= submit_tag "submit", :name => nil, :id=>"select_content_submit"

我按如下方式更改 Controller 中的内容:
# Default params to "type1" for initial load
if params[:content_type]
@content_type = params[:content_type];
else
@content_type = "type1"
end

case @content_type

when "type1"
# get the content
@model_content = ...

when "type1"
# get the content
@model_content = ...

我的问题是,上述方法是唯一可以为参数设置默认值的方法,还是可以更好地进行设置的方法?这可行,但是我想知道这是否是正确的方法。

更新
根据以下建议,我使用了以下内容,并在defaults.merge行上出现错误:
defaults = {:content_type=>"type1"}
params = defaults.merge(params)
@content_type = params[:content_type]

最佳答案

设置默认选项的一种好方法是将它们放在哈希中,然后将传入的选项合并到其中。在下面的代码中,defaults.merge(params)将覆盖默认值中的params哈希值。

def controller_method
defaults = {:content=>"Default Content", :content_type=>"type1"}
params = defaults.merge(params)
# now any blank params have default values

@content_type = params[:content_type]
case @content_type
when "type1"
@model_content = "Type One Content"
when "type2"
#etc etc etc
end
end

关于ruby-on-rails-3 - Rails 3 : Controller params default value,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9073171/

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