誰でも入力できるフォームを作成したいのですが、送信するにはログインする必要があります。そうでない場合は、入力するまでプロセスを保留にします。
私の思考プロセスは、誰かがフォームに出くわした場合、ログインしているかどうかを確認し、そうでない場合でもユーザーは入力できますが、代わりに「送信」ではなくログインまたはサインアップするように求められます. ユーザーがいずれかのリンク (ログイン/サインアップ) をクリックした場合は、フォーム データを保存する必要があります (ほとんどの場合、セッションに保存し、ログイン/サインアップしてから、保存されたフォームがあるかどうかをコンピューターに確認させます)。 、そうであれば、新しく登録されたユーザーがそれを受け入れることができる画面のような確認を表示します。
うまくいくと思ったコードを以下に投稿しましたが、そうではありません-そして、レールを知っているので、おそらくこれをより速く簡単に行うための何らかの慣習があると思いました!
そして、フォームデータを渡す方法が正しいとは思わないので、誰かが私を修正できれば、それは素晴らしいことです!
意見
<%= form_for :comment, :url => {:action => 'create'} %>
form fields here
<% if current_user %>
<%= f.submit "Submit" %>
<% else %>
<%= link_to "Log In", save_to_session_and_log_in_path(:comment => :comment) %> or
<%= link_to "Sign Up", save_to_session_and_sign_up_path(:comment => :comment) %>
<% end %>
コントローラ
def save_to_session_and_log_in_path
session[:temp_comment] = Comment.new(params[:comment])
redirect_to log_in_path
end
def save_to_session_and_sign_up_path
session[:temp_comment] = Comment.new(params[:comment])
redirect_to sign_up_path
end
ユーザー* コントローラー
def create
#Normal create action, under the redirect:
if session[:temp_comment]
redirect_to confirm_comment
else
redirect_to users_home_page
end
end
私が受け取っているエラーは次のとおりです。
ActiveRecord::RecordNotFound in CommentsController#show
Couldn't find Comment with id=save_to_session_and_log_in
Rails.root: scrubbed
Application Trace | Framework Trace | Full Trace
app/controllers/comments_controller.rb:87:in `show'
Request
Parameters:
{"comment"=>"comment"
"id"=>"save_to_session_and_log_in"}
私はそれをあらゆる方法で微調整しようとしましたが、それでもここに到達し続けるため、コードが機能しているかどうかをテストできません