2014-02-19 62 views
1

我正在創建用於聯繫管理員的聯繫表單。從自定義表格中檢索參數

在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我創建的取消隱藏引導的模式的鏈接:

<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>它是在嘗試加載窗體及其屬性時生成的。

我只是想創建自定義表單並傳遞屬性,以便我可以在郵件程序中使用它們。

任何想法我做錯了什麼?

回答

1

方法subjectupport沒有在用戶模型上定義。要使用自定義屬性,你應該使用form_tag。

form_for和simple_form_for將爲您創建的每個輸入查找屬性,並且由於您的模型不響應它,它會引發錯誤。如果您想使用此屬性,請改用form_tag。

僅在您的模型上創建屬性僅僅是因爲視圖的需要不是一個好主意,您可以使用form_tag或採用更高級的soluation來創建自定義模型,以響應您的自定義屬性和User模型屬性。

1

您可以在User模型添加屬性訪問器subjectsupport,這樣

class User < ActiveRecord::Base 
    # ... 
    attr_accessor :subjectsupport 
    attr_accessible :subjectsupport # though you better use strong parameters 
    # ... 
end 

這應該做的伎倆。

+1

是的,你只需要刪除'attr_accessible'行。 –

+0

歡呼聲謝謝(上面的評論是針對Rails4的) –