2011-07-05 32 views
1

我正在使用Devise在我的網站進行身份驗證。 我希望用戶能夠在文本區域發帖,如果他/她已登錄,如果不是,他會輸入他想發佈在textarea中的內容,當他點擊帖子時,彈出一個登錄對話框用戶登錄/註冊,然後自動在文本區域將其評論發佈到網站。使用Devise和textarea,登錄後發帖

我不確定我是否使用了正確的邏輯,但如果用戶已登錄,我有發佈按鈕以發佈評論,否則什麼也不做,並且javascript會打開登錄對話框。登錄/啓動工作,但我想出瞭如何後自動發佈消息。

這是我對按鈕的代碼:

<% if user_signed_in? %> 
    <%= f.submit :value => t(:submit_comment_text), :class => "submit-button" %> 
<% else %> 
    <input class="submit-button" id="comment_submit_nlogged" value="Post!"/> 
<% end %> 

第一部分工作正常,但第二部分的對話框中打開和用戶登錄,但它刷新頁面,我失去任何用戶輸入在文本區域。 我試圖通過params變量獲取文本區域的內容,但是當設計被調用時,文本區域的參數消失,它們被設計參數取代。

任何想法如何讓這個工作?

回答

0

您可以在會話變量保存在文本區域像

  • 傳入PARAMS的值,當用戶體徵/報
  • 控制器,它保存在一個會話變量(session[:text_area] = params[:text_area]
  • 然後符號後或註冊,你將被重定向到評論頁面,你可以
    使用session[:text_area]重新填充在控制器方法@comment對象,將其取下。

你可以閱讀有關Rails的會話here 此外,還可以使用Cookie(如果textarea的含量很小)或HTML localStorage的(如果你的瀏覽器支持的話)

+0

謝謝!有很多我需要在這裏學習,謝謝你的信息:)! – Matilda

+0

嗯所以對於第一部分「傳遞參數中的值時,用戶登錄/註冊」,所以在我的JavaScript上單擊操作我做textTyped = textarea.val();這是你的意思嗎?然後我把它發送給Ruby來設置Ajax參數?或者,還有更好的方法? – Matilda

0

試試這個

<% if current_user %> 
<input class="submit-button" id="comment_submit_nlogged" value="Post!"/> 
<%= f.submit :value => t(:submit_comment_text), :class => "submit-button" %> 
<% else %> 
Please signed in for posting comments! 
<% end %> 

CURRENT_USER是一個內置的色器件的方法。你只或檢查用戶是否存在不(signed_in與否)

+0

呃,好像IM誤解的問題 –

+0

是啊,但我學到了東西:) – Matilda

相關問題