我在以下查看代码中收到syntax error, unexpected =>, expecting '}'
:
<%= render :partial => 'form', :locals => { :message => @message, :user => @user} %>
我正在从new.html页面渲染部分内容。部分看起来对我的眼睛,但也许我错过了什么?
_form.html.erb:
<%= form_for message, :url => user_messages_path(user), :html => {:class => "MainForm"} do |f| %>
<%if message.reply_to%>
<%=f.hidden_field :to%>
<%=f.hidden_field :parent_id%>
<%else%>
<%label{:for => 'message_to'} %>
<%=:to.l%>
<%em= "(" + :type_a_username.l + ")"%>
<%= text_field_tag 'message[to]', @message.to, {:autocomplete => "off", :size => 35, :id => "message_to"}%>
<% auto_complete%>#message_to_auto_complete
<%content_for :end_javascript do%>
<%= auto_complete_field 'message_to', {:url => auto_complete_for_username_user_messages_path(@user), :tokens=>','}%>
<%if @reply %>
<%= f.hidden_field :subject %>
<%else%>
<%label{:for => 'message_subject'}= :subject.l + ":"%>
<%= f.text_field :subject%>
<%label{:for => "message_body"}= :message.l + ":"%>
<%= f.text_area :body%>
<%p%>
<%= submit_tag :send.l%>
答案 0 :(得分:2)
label
标记不包含哈希值。来自the docs:
<% f.label :message_to %>
您的代码中的以下行看起来特别可疑,它肯定会引发错误。你到底想要做什么呢?
<%label{:for => 'message_subject'}= :subject.l + ":"%> # THIS WON'T WORK
如果您想要标签的自定义文字,可以通过以下方式完成:
<%= f.label :message_subject, "#{subject.l} :" %>
哪个输出以下标记:
<label for="message_subject">THE MESSAGE SUBJECT</label>
答案 1 :(得分:1)
此语法(在整个视图中的类似位置):
<%label{:for => 'message_subject'}= :subject.l + ":"%>
无效。
(通常)正确的标签元素是:
<%= f.label :subject %>
请记住以下几点:
:subject
是什么),是一种特殊的对象,最终代表一个不可变的字符串;它没有您期望的.l
方法:subject
是message
的字段,请确保您使用的是表单构建器对象(在本例中为f
变量),因此表单元素已正确绑定到{ {1}}对象message
语法将表单元素回显到页面。如果您希望代码呈现(或=
要压缩),它应该总是看起来像<%= ... %>
。