2016-02-28 86 views
1

我想在註冊用戶時添加電子郵件確認。用戶必須使用他們的邀請碼和電子郵件地址填寫表格,然後他們會收到一封包含激活鏈接的電子郵件。format.js不執行(ajax)

所以我想要做的就是讓用戶填寫表單,然後提交表單並重新加載表單,以便隱藏和顯示消息「我們向您發送了一封電子郵件,請檢查並單擊鏈接「而不是重新加載整個頁面。

signup.html.erb

這裏我添加了遙控:真

<%= form_tag(form_action, method: :get, remote: true, id: 'create-form') do %>

users_controller.rb

重定向的作品,但format.js是未知格式

def new 

... code checking params 

if @user.user_email_confirmed 
    render :new 
else 
    respond_to do |format| 
    format.html { redirect_to signup_path(@user.name, email: @user.email) } 
    format.js 
    end 
end 

new.js.erb

$('#create-form').hide().after(''); 
$('.login-form').append('<p class="link-sent">We have sent an activation link to the email address you entered - please be sure to check your spam or trash folders. Please click that link to complete account activation.</p>'); 

不知道我錯過了什麼,什麼想法?

+0

當你點擊窗體中的「提交」按鈕時,你確定你的'new'動作被調用,我真的不這麼認爲! – SsouLlesS

+0

請檢查您的控制器中是否有'before_action'或任何其他回調,可能導致問題 – SsouLlesS

+0

我很確定提交按鈕調用新的。表單操作指向用戶#新路由。 – cvDv

回答

1

我真的不認爲提交時表單調用的動作是您的new動作,可能是您的控制器中的一些create動作。

所以,當你打你的形式,它是通過Ajax由於你送的「提交」按鈕有remote: true選項,並呼籲沒有format.js也不js.erb視圖的動作,這就是爲什麼你未知格式。

確保在提交表單時要調用哪個控制器操作,然後添加format.js和正確的js.erb視圖。

請看看這個blog post,可能會對您有幫助。