Rails在帮助文件中查看帮助程序

我可能错过了一些明显的东西,但这就是我想要做的事情。

从视图来看,我正在调用自定义辅助函数

在带有display_services函数的帮助文件中

 def display_services html = "
" form_for @user do |f| f.text_field ... end html << "
" end

我发现form_for方法和f.text_field直接输出到HTML流而没有我喜欢的div包装器。 在display_services中输出所有HTML的正确语法是什么? 在此先感谢您的帮助。

只是对风格的建议,我喜欢做这样的事情:

在你看来:

 <% display_services %> 

请注意,不再需要= 。 然后帮助程序使用concat()向页面附加内容,并且put-long-strings-together的内容也已过时:

 def display_services concat("
") form_for @user do |f| f.text_field ... end concat("
") end

标记放入帮助程序是否是必要的。 如果你需要一个帮助器来嵌入某个块,你也可以使用一些yield-magic:

 def block_helper concat("
") yield concat("
") end

并在你的视图中使用它 – 当然还有助手:

 <% block_helper do %> cool block
<% display_services %> <% end %>

恕我直言,你不应该在Ruby代码中硬编码HTML。 相反,更喜欢局部视图 。

 module ServicesHelper def display_services(user) render :partial => "shared/display_services", :locals => {:user => user} end end 

事实certificate,我必须做这样的事情

 def display_services html = "
" html << (form_for @user do |f| f.text_field ... end) html << "
" end

注意()包裹在表单块周围。 如果有人有更好的解决方案,请告诉我。