我正在为用户创建联系表单以联系管理员。
在users_controller.rb上,我创建了方法“ticketsupport”:
def ticketsupport
subjectF = params[:user][:subjectsupport]
messageF = params[:user][:messagesupport]
if UserMailer.support_ticket(current_user.username, current_user.email, subjectF, messageF).deliver
flash.alert = "Your ticket has been recorderd. We will come back to you shortly."
redirect_to user_path(current_user)
end
end
在application.html.erb上我创建了一个取消隐藏bootstrap模态的链接:
<a href="#supportModal" data-toggle="modal">Need Help? Submit a Support Ticket</a>
<!-- Support Modal -->
<div id="supportModal" class="modal hide fade" tabindex="-1" role="dialog" aria-labelledby="supportModalLabel" aria-hidden="true">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h3 id="supportModalLabel">Contact Support</h3>
</div>
<div class="modal-body">
<%= render "supportform" %>
</div>
<div class="modal-footer">
<button class="btn btn-primary">Send ticket</button>
</div>
</div>
您可以找到我呈现的表单here。
最后,在路线中添加了这个:get "supportform" => "users#ticketsupport"
加载页面时出现的错误是:undefined method 'subjectsupport' for #<User:0x007ff5de93ed98>
并且在尝试加载表单及其属性时生成错误。
我只是想创建自定义表单并传递属性,以便我可以在邮件程序中使用它们。
知道我做错了什么吗?
答案 0 :(得分:1)
您可以在User模型中为subjectupport添加属性访问器,例如
class User < ActiveRecord::Base
# ...
attr_accessor :subjectsupport
attr_accessible :subjectsupport # though you better use strong parameters
# ...
end
这应该可以解决问题。
答案 1 :(得分:1)
未在用户模型上定义方法subjectupport。要使用自定义属性,您应该使用form_tag。
form_for和simple_form_for为您创建的每个输入查找属性,并且由于模型没有响应它,因此会引发错误。如果要使用此属性,请改用form_tag。
在模型上创建属性只是因为视图需要不是一个好主意,您可以使用form_tag或采用更高级的解决方案,即创建响应自定义属性和用户模型属性的自定义模型