【问题标题】:Rails Form Object Returns Object ID in mailRails 表单对象在邮件中返回对象 ID
【发布时间】:2014-12-20 01:03:15
【问题描述】:

我有下面的表格,它工作得很好,但是提交时:event 字段在邮件中返回一个 ID,有什么想法可以防止这种情况发生吗?

表格

<%= simple_form_for @sponsorship_inquiry, :method => :post do |f| %>
    <%= f.input :spam, as: :hidden %>
    <%= f.input :name %>
    <%= f.input :phone %>
    <%= f.input :email %>
    <%= f.input :job_title %>
    <%= f.input :company %>
    <%= f.input :event, :collection => Event.where(:end_date.gt => Date.today, :is_live => 'true') %>
    <%= f.input :message, as: :text, :input_html => { :cols => 5, :rows => 6 } %>
    <%= f.button :submit %>
<% end %>

邮递员

Name: <%= @sponsorship_inquiry.name %>
Phone: <%= @sponsorship_inquiry.name %>
E-Mail: <%= @sponsorship_inquiry.email %>
Job Title: <%= @sponsorship_inquiry.job_title %>
Company: <%= @sponsorship_inquiry.company %>
Event: <%= @sponsorship_inquiry.event %>
Message: <%= @sponsorship_inquiry.message %>

控制器

def new
    @sponsorship_inquiry = SponsorshipInquiry.new
end

def create
    # Hidden field for bots/spiders
    redirect_to new_inquiry_path and return if params[:spam].present?
    @sponsorship_inquiry = SponsorshipInquiry.new(params[:sponsorship_inquiry])
    if @sponsorship_inquiry.valid?
        SponsorshipInquiryMailer.admin(@sponsorship_inquiry).deliver
        redirect_to sponsorship_inquiries_path
    else
        render :new
    end
end

【问题讨论】:

  • sponsorship_inquiryevent 是如何关联的?如果它们没有关联,那么您将必须找到具有该 ID 的事件并将其传递给您的邮件。如果它们已经关联,则向我们展示关联,您可以对代码进行建模以了解发生了什么:)

标签: ruby-on-rails ruby ruby-on-rails-3 mongodb mongoid3


【解决方案1】:

需要您的 SponsorshipInquiry 模型。

如果你有

class SponsorshipInquiry < ActiveRecord::Base

  belongs_to :event

end

尝试发送&lt;%= @sponsorship_inquiry.event.name %&gt; 或其他)

如果“事件”只是与事件模型无关的字段,您需要从表单中解析所需的值。

恕我直言

【讨论】:

    【解决方案2】:

    如果您的问题是“我可以修改表单以便我自动(神奇地?)获取一个对象作为参数吗?”,答案肯定是不。

    你要做的就是根据接收到的id在数据库中搜索事件对象。

    【讨论】:

    • 表单中的选择下拉菜单显示事件标题,但电子邮件返回 ID。所以我的问题是为什么?
    • 您能否编辑您的帖子以包含生成的 html 代码并准确解释您所期望的行为? (如果您只是在那里编写代码期望人们猜测发生了什么以及它应该如何表现,那么问题就不是问题)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-25
    • 1970-01-01
    • 2018-01-04
    相关资源
    最近更新 更多