【问题标题】:rails custom html elements formrails自定义html元素表单
【发布时间】:2012-11-11 11:30:52
【问题描述】:

我是 Rails 的新手,我搜索过网络和书籍,但在使用 Rails 时我找不到如何制作自定义表单。 发生的事情是我习惯于编写自己的 HTML 标签,我对此很满意。我不喜欢使用像 JSF(来自 JAVA)这样为我编写 html 组件的库,我不希望 rails 为我编写它,除了像

这样的简单标签
text_field(:post, :title, :size => 20)
# => <input type="text" id="post_title" name="post[title]" size="20" value="#{@post.title}" />

所以..我该怎么做..例如:我想自己写

<input type="text" class="myclass" data="mydata" name="how-to-get-the-attribute-name-with-rails" value="how-to-get-value-with-rails" />

我该怎么做?

【问题讨论】:

    标签: html ruby-on-rails ruby custom-component


    【解决方案1】:

    你可以简单地在 Rails 表单中编写 html,所以

    <input type="text" class="myclass" data="mydata" name="how-to-get-the-attribute-name-with-rails" value="how-to-get-value-with-rails" />
    

    完全有效,但请注意,您应该以正确的方式使用名称和 id,以自动将它们绑定到您的后端控制器。

    毕竟,text_field(:post, :title, :size =&gt; 20) 所做的是将参数转换为纯 HTML(我们在 Rails 中称它们为辅助方法)。

    阅读here 了解表单助手选项(使用助手将保持您的代码干净)。

    【讨论】:

    • 谢谢@sameera207,但以正确的方式获取这些名称和 ID 正是我想要的,但我想从 rails 调用一些东西.. 这是一种方式吗?
    • @thiagoh,实际上在 rails helper 方法中几乎所有东西都可以配置。如果你的问题我猜对了,我猜“joofsh”已经给了你答案,如果有帮助,请告诉我们:)
    【解决方案2】:

    正如你在上面写的,rails中任何表单字段的名称都采用以下格式

    name = 'post[name]' i.e. model_name[attribute_name]
    

    所以你的参数哈希将包含:post =&gt; {:name =&gt; value},它允许你使用ma​​ss-assignment。但是如果你想从表单中获取一些额外的参数,你可以直接将它们包含在表单中并给出他们任何你想要的名字。它将在您的参数哈希中可用。


    您可以使用value = &lt;%= @object.attribute_name. %&gt; 轻松获得价值 我不确定你是想知道这个还是别的。如果您需要更多帮助,请告诉我。

    【讨论】:

      【解决方案3】:

      如果您想对正在创建的 html 进行更多控制,也可以使用 content_tag

      content_tag :input, "label_name", class: "myclass", data: "mydata", name: "how-to-get-the-attribute-name-with-rails", value: "how-to-get-value-with-rails"
      

      您可以为:input 补充任何html 元素标签。因此,如果您想要一个 div,请使用 :div 等...

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-02-20
        • 2017-06-02
        • 1970-01-01
        • 2019-12-11
        • 1970-01-01
        相关资源
        最近更新 更多