从自定义表单中检索参数

时间:2014-02-19 17:58:25

标签: ruby-on-rails

我正在为用户创建联系表单以联系管理员。

在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>并且在尝试加载表单及其属性时生成错误。

我只是想创建自定义表单并传递属性,以便我可以在邮件程序中使用它们。

知道我做错了什么吗?

2 个答案:

答案 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或采用更高级的解决方案,即创建响应自定义属性和用户模型属性的自定义模型