使用动态变量渲染部分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/
玩得开心!