2012-07-14 70 views
8

我有一個用戶之間的單向關係模型(用戶有很多關係),它持有兩個給定用戶的ID以及用戶a的用戶b的暱稱。我想使用表單來允許用戶傳入另一個用戶的電子郵件地址和暱稱。如果具有該電子郵件的用戶存在,則在用戶之間建立關係。如果沒有用戶匹配,請使用該電子郵件創建一個新的「幻像」用戶,然後建立關係。如何將任意(非模型屬性)值傳遞給rails動作?

我是比較新的軌道,並首先使用基本天真地試着:

= form_for @relationship do |f| 
    = f.label :email 
    = f.text_field :email 
    = f.label :nickname, "Nickname" 
    = f.text_field :nickname 
    = f.submit "Submit", class: "btn btn-large btn-primary" 

失敗的原因是關係模型不包含電子郵件屬性。然後,我嘗試了以下內容,認爲它可能有效,因爲它沒有直接引用關係模型。

= form_tag :controller => "relationships", :action => "create" do 
    = label :email   
    = text_field :email 
    = label :nickname, "Nickname" 
    = text_field :nickname 
    = submit "Submit", class: "btn btn-large btn-primary" 

但是,這會引發錯誤「錯誤的參數數目(1 2)」

我的電子郵件字段添加到關係模型,但它不從時,我就用它需要分開查找所需的用戶。我的計劃是使用傳遞給關係控制器中的創建操作的電子郵件和暱稱值,以創建關係或創建新用戶,然後根據具體情況創建關係。那麼如何將任意值傳遞給控制器​​操作?

回答

11

使用第一個表單,並在模型中創建一個attr_accessor電子郵件屬性。

這基本上是一個臨時變量,你可以從窗體等東西中派生出來,但它不會保存到數據庫中。

class Relationship < ActiveRecord::Base # <- Assuming that's the name of your Relationship model 

    attr_accessor :email 
+3

如何在Rails 4中使用強參數? – Micah 2014-04-24 19:13:19

+3

@Micah請參閱http://stackoverflow.com/a/15920542。只需將它們添加到允許的參數列表中即可。 – Anthony 2015-01-04 04:43:32

相關問題