2017-01-29 108 views
-1

我試圖做一個表單,用戶可以用自己的用戶名這樣的正常凋謝後 - >正常更改視圖基礎上軌在select_tag選擇選項

=form_for @confession , html: {multipart: true} do |f| 
    =f.label :Confess 
    =f.text_area :confession , require: true 
    =f.file_field :confessionimage 
    =f.select (:id,options_for_select(ID)) 
    =f.submit 'Confess' 

或匿名,他們的名字將被隱藏沒有人會知道誰發佈了這個帖子..對於這個我認爲是我會讓一個用戶在數據庫中匿名命名,如果用戶在發佈時在select_form中選擇匿名,他們將作爲匿名用戶發佈。

在我的控制器中,我想要類似這樣的東西和我不明白的要點是控制器如何知道用戶選擇了什麼?

這是我的控制器

def index 
     @amitian = Amitian.where(institute: current_amitian.institute) if     amitian_signed_in? 
     @confessions = Confession.where(amitian_id: @amitian.ids).order('created_at DESC') if amitian_signed_in? 
     @confession = current_amitian.confessions.build 
     @anonymous = Amitian.where(email: [email protected]) 
     # (if anonymous selected) 
     do @anonymous.confessions.build 
    end 
+0

表單數據將在params中提供hash –

+0

可以用你的plz解釋一下代碼片段 –

+0

的答案我希望你的實際縮進比這裏更有秩序,因爲這裏到處都是。清潔代碼是可讀代碼,可讀代碼可以更容易地找到錯誤。 – tadman

回答

0

要訪問此:

if confession_params[:id] == 1 #or params[:confession][:id] == 1 
    loaded_view = :foo 
else 
    loaded_view = :bar 
end 

respond_to do |format| 
    format.html { render loaded_view } 
end 
:您使用 confession_params[:id],或 params[:confession][:id] 如果要有條件地加載不同的觀點,你可以使用的respond_to塊這樣的ID PARAMS

這將加載foo.html.erbbar.html.erb,根據你@confession:id參數,通過你的選擇通過form_for標記,它根據視圖的變量模型加載參數名稱。

+0

by [:id] you mean [:confession] [:postid] ie [:tablename] [:attribute] ryt? –

+0

我在我的代碼中試過這個 @ anonymous.each do | a | \t @調試=一個 如果PARAMS [:表白] [:帖子ID] == '匿名' @自白= a.confessions.build 別的 \t @自白= current_amitian.confessions.build 和得到錯誤=未定義方法'[]'爲零:Nillclass –

+0

然後您正在使用非標準參數。嘗試讀取請求的日誌,它將打印與它的標識符一起發送的參數。 – ErvalhouS