【问题标题】:How to convert form_tag in haml to erb如何将haml中的form_tag转换为erb
【发布时间】:2013-08-13 19:36:13
【问题描述】:

您好,这是我在 HAML 中的 form_tag,当我将其转换为 erb 时出现错误,

%h2 Create New Movie

= form_tag movies_path, :method => :post do

= label :movie, :title, 'Title'
= text_field :movie, :title

= label :movie, :rating, 'Rating'
= select :movie, :rating, ['G','PG','PG-13','R','NC-17']

= label :movie, :release_date, 'Released On'
= date_select :movie, :release_date

= submit_tag 'Save Changes'

下面是我的erb,

<h2> Create New Movie </h2>

<form action = <%= "#{movies_path}"%> method = "post"> 

 <%= label :movie, :title, 'Title' %>
 <%= text_field :movie, :title %>

 <%= label :movie, :rating, 'Rating' %>
 <%= select :movie, :rating, ['G','PG','PG-13','R','NC-17'] %>

 <%= label :movie, :release_date, 'Released On' %>
 <%= date_select :movie, :release_date %>

 <%= submit_tag 'Save Changes' %>
</form>

我在第 12 行左右收到“无法将符号转换为字符串”。

【问题讨论】:

    标签: ruby-on-rails haml erb


    【解决方案1】:

    您可以使用form_tag 助手。

    <%= form_tag movies_path, method: :post do %>
    ...
    <% end %>
    

    推荐阅读:http://api.rubyonrails.org/classes/ActionView/Helpers/FormTagHelper.html#method-i-form_tag

    【讨论】:

    • 但在第 12 行左右我仍然收到“无法将符号转换为字符串”。
    • @shailbenq,您能否在问题中添加回溯。
    • 我对代码做了一些更改,错误已经消失,但我只在页面上看到“创建新电影”。

      创建新电影

      [:month, :day, :year],:prompt => true, :start_year => 1970 , :end_year => Time.now.year} %>
    • @shailbenq,很抱歉在我的回答中错过了= 登录。应该是&lt;%= form_tag...。请尝试更新后的答案。
    • 感谢它现在可以使用,如果您有任何指向 erb 和 haml 教程的链接,请发布它。我知道的很少,但您的意见会有所帮助
    【解决方案2】:

    最好的方法是使用 RESTful 资源和表单对象:

    <%= form_for @movie do |f| %>
      <%= f.label :title %>
      <%= f.text_field :title %>
    
      <%= f.label :rating %>
      <%= f.select :rating, ['G','PG','PG-13','R','NC-17'] %>
    
      <%= f.label :release_date, 'Released On' %>
      <%= f.date_select :release_date %>
    
      <%= f.submit 'Save Changes' %>
    
    <% end %>
    

    【讨论】:

      【解决方案3】:

      这个:

      &lt;form action = &lt;%= "#{movies_path}"%&gt; method = "post"&gt;

      必须是这样的:

      &lt;form action &lt;%= "#{movies_path}"%&gt; method = "post"&gt;

      在 ERB 中发生输出之前无需添加等号。或者你应该使用form_tag

      【讨论】:

        猜你喜欢
        • 2012-09-16
        • 1970-01-01
        • 2015-09-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-06
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多