我可能错过了一些明显的东西,但这就是我想要做的事情.
从视图来看,我正在调用自定义辅助函数
<div>
<%=display_services%>
</div>
Run Code Online (Sandbox Code Playgroud)
在带有display_services函数的帮助文件中
def display_services
html = "<div>"
form_for @user do |f|
f.text_field ...
end
html << "</div>"
end
Run Code Online (Sandbox Code Playgroud)
我发现form_for方法和f.text_field直接输出到HTML流而没有我喜欢的div包装器.在display_services中输出所有HTML的正确语法是什么?在此先感谢您的帮助.
小智 30
恕我直言,你不应该在Ruby代码中硬编码HTML.相反,更喜欢局部视图.
module ServicesHelper
def display_services(user)
render :partial => "shared/display_services", :locals => {:user => user}
end
end
Run Code Online (Sandbox Code Playgroud)
xij*_*ijo 22
只是对风格的建议,我喜欢做这样的事情:
在你看来:
<% display_services %>
Run Code Online (Sandbox Code Playgroud)
请注意,=不再需要.然后帮助程序使用concat()向页面附加内容,并且put-long-strings-together的内容也已过时:
def display_services
concat("<div>")
form_for @user do |f|
f.text_field ...
end
concat("</div>")
end
Run Code Online (Sandbox Code Playgroud)
将<div>标签放入帮助器是否是必要的.如果您需要帮助程序将某些内容嵌入块中,您也可以使用一些yield-magic:
def block_helper
concat("<div>")
yield
concat("</div>")
end
Run Code Online (Sandbox Code Playgroud)
并在你的视图中使用它 - 当然也有助手:
<% block_helper do %>
cool block<br/>
<% display_services %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
事实证明,我必须做这样的事情
def display_services
html = "<div>"
html << (form_for @user do |f|
f.text_field ...
end)
html << "</div>"
end
Run Code Online (Sandbox Code Playgroud)
注意()包裹在表单块周围.如果有人有更好的解决方案,请告诉我.
| 归档时间: |
|
| 查看次数: |
25904 次 |
| 最近记录: |