首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >更改ruby块的上下文/绑定/范围(特定于Rails的form_for)

更改ruby块的上下文/绑定/范围(特定于Rails的form_for)
EN

Stack Overflow用户
提问于 2011-11-08 00:03:46
回答 1查看 454关注 0票数 0
代码语言:javascript
运行
复制
def form_helper(record, *args, &block)
  options = args.extract_options!
  form_for(record, *(args << options.merge(:builder => builder))) do |f|
    f.hidden_field 'hidden', 'key'
    yield &block
  end
end

如果我有这个帮助器,我该如何更改传入的块的作用域,以便在f上下文中对其求值

所以我可以像这样使用它:

代码语言:javascript
运行
复制
<%= form_helper @resource, :builder => SomeFormBuilder do |form| %>
   Some stuff
<%- end %>

但它将输出隐藏字段和块中的任何其他内容。因为我只添加隐藏字段,所以我不想创建自定义表单构建器,而是指定一个不同的表单构建器。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-11-08 22:34:32

正确的方法是像这样调用这个块:block.call(f),并对其他字段使用concat。

代码语言:javascript
运行
复制
  form_for(record, *(args << options.merge(:builder => builder))) do |f|
    block.call(f)
    concat hidden_field_tag 'key', "#{key}/${filename}"
    concat hidden_field_tag 'AWSAccessKeyId', "#{access_key}"
    concat hidden_field_tag 'acl', "#{acl}"
    concat hidden_field_tag 'success_action_redirect', "#{redirect}"
    concat hidden_field_tag 'policy', "#{policy}"
    concat hidden_field_tag 'signature', "#{signature}"
  end
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8039052

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档