使用动态变量渲染部分rails

我试图根据用户所在的分类单元渲染部分内容。 在我的application.html.erb布局中,我有以下代码行:

 

在taxons控制器中,在show方法中,我有:

 @taxon_id = params[:id].split('/').first 

在分类单位#show我有:

    

当我运行它时,我得到一个SyntaxError。 但是在分类中#show如果我只是输入:

    

没有’= true’然后页面呈现,输出’@enable_women’。 所以我知道它正在获取正确的变量,我只需要将该变量设置为true。 我错过了什么?

非常感谢。

使用instance_variable_set

 instance_variable_set "@enable_#{@taxon_id}", true 

只是提醒一下,在控制器内做这些事情会更好。

首先,我想给你一些提醒:

  • 首先在用户提交的输入上调用不是一个好主意(如果我提交怎么办?id =,它会返回nil)也非utf-8编码会使你的应用程序崩溃,例如:?id =Ж

  • 控制器是野兽! 我看到你在视图中设置了一个真/假instance_variable的值,请使用控制器在渲染其输出之前定义逻辑。 特别是当参数依赖时。

所以对于一个解决方案:在你的控制器中,params [:id]应该建议一个INT(11)值:

 def action # returning a Taxon should be a good idea here @taxon = Taxon.find(params[:id]) # as I would give a Taxon class an has_many relation to a User @users = @taxon.users end 

并在你的行动的观点

 <%= render :partial => "taxons/users", collection: @users %> 

当然,你可以很好地确定返回的用户的范围并相应地渲染想要的部分。

如果您想了解更多关于“The Rails方式”的信息,请阅读: http : //guides.rubyonrails.org/

玩得开心!