在我正在开发的应用程序中,我在模型中定义了一个方法 task_types
:
task.rb
def self.task_types
["ad_hoc"]
end
我使用task_types
来填充下拉菜单,但我也想使用它来动态渲染部分菜单。
我的想法是,对于每种任务类型,都会有一个关联的评论框。我继续创建了一个助手,它将根据选择的任务类型调用正确的部分:
#tasks_helper.rb
module TasksHelper
def completion_comment(task)
task_types = @task.task_type
render :partial => "#{Task.task_types}", :locals => {:task => task}
end
end
不幸的是,当我调用completion_comment时,我收到了错误消息“部分名称([“ad_hoc”])不是有效的Ruby标识符。”
我正在寻找一种动态方式来渲染适当的部分。我认为我走在正确的 rails 上,但我不确定如何从我的 task_types
方法中提取数组元素(正如您在错误消息中看到的那样,括号和引号正在变得拉入渲染操作)。或者,也许我需要利用不同的方法来动态渲染部分。如有任何帮助,我们将不胜感激。
最佳答案
这是有效的:
module TasksHelper
def render_task_form(task)
render :partial => "/tasks/completed/#{task.task_type.downcase}"
end
end
我很早就尝试过这个解决方案,并且收到了一条错误“部分名称 (/tasks/completed/) 不是有效的 Ruby 标识符;请确保您的部分名称以字母或下划线开头,并且后面跟着由字母、数字或下划线的任意组合组成。”
我又试了一次,为了解决这个问题,我从数据库中删除了所有任务。现在部分动态渲染。希望这对其他人有帮助!
关于ruby-on-rails - Rails 3 中局部的动态渲染,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15282882/