Ruby on rails 4 如何在更新属性中使用变量作为属性

Ruby on rails 4 如何在更新属性中使用变量作为属性,ruby-on-rails-4,Ruby On Rails 4,因此,我有一个对象,它有一组属性,这些属性是布尔标志,用于标记某个内容是否已发布。它可以发布到几种不同的格式:published_to_web、published_to_email、published_to_pdf等。我认为我不需要单独的方法来重置每种格式,我只需要使用一种方法,并在单击相关按钮(web、email、pdf等)时使用发送的变量设置属性。例如,一个按钮调用方法和参数[:format]=“web”,因此我想将对象的“publish_to_web”属性设置为false: @bullet

因此,我有一个对象,它有一组属性,这些属性是布尔标志,用于标记某个内容是否已发布。它可以发布到几种不同的格式:published_to_web、published_to_email、published_to_pdf等。我认为我不需要单独的方法来重置每种格式,我只需要使用一种方法,并在单击相关按钮(web、email、pdf等)时使用发送的变量设置属性。例如,一个按钮调用方法和参数[:format]=“web”,因此我想将对象的“publish_to_web”属性设置为false:

@bulletin.update_attributes( "published_to_#{params[:format]}", false)
但我不能让它工作。在RoR中似乎应该很简单,但我似乎无法获得正确的juju。我试过:

@bulletin.update_attributes( "published_to_#{params[:format]}".to_sym, false )
@bulletin.update_attributes( "published_to_#{params[:format]}", false )
@bulletin.update_attributes( "published_to_#{params[:format]}: false" )
@bulletin.update_attributes( ":published_to_#{params[:format]}" => false)

。。。什么是秘方?

在用户输入上使用
to_sym
是一个炸弹。我是说,爆炸性的。符号从来都不是垃圾收集的。我开始写答案,然后意识到你差点就得到了!最后一个是解决方案中的1个字符。提示:忘了符号吧。啊啊啊。。。95%的时间RoR都很出色。。。这是在哈姆或埃尔布或任何棘手的小东西,似乎总是一个陷阱!谢谢,这样做了:@bulletin.update_attributes(“published_to_35;{params[:format]}”=>false)是的。那就回答你自己的问题吧。这是完全合法的。你能解释一下这是怎么回事吗?当然,我有一个对象模型,它的属性具有相同的形式:“published\u to\u web”、“published\u to\u pdf”、“published\u to\u email”等等。但我不想编写不同的方法来重置每个属性。在一个网页上,我有几个不同的按钮:
=link\u to reset\u publishing\u organization\u bulletin\u path(@organization,@bulletin,type:'pdf')
将'type'参数作为查询字符串附加到发送到服务器的URL中,“reset\u publishing”方法将其作为'params[:type]'Ruby interpolates'接收_#在本例中,{params[:type]}作为属性'published_to_pdf'
@bulletin.update_attributes( "published_to_#{params[:format]}" => false)