Ruby on rails 推迟创建操作
我想有一个任何人都可以填写的表格,但必须登录才能提交——如果没有,就暂停这个过程,直到他们填写为止 我的想法是,如果有人看到表单,它会检查他们是否登录,如果没有,用户仍然可以填写表单,但会提示用户登录或注册,而不是“提交”。如果他们点击任何一个链接(登录/注册),我希望它保存表单数据,最有可能是会话,让他们登录/注册,然后让计算机检查是否有保存的表单,如果有,则显示一个类似确认的屏幕,新注册的用户可以接受它 我在下面发布了我认为可以使用的come代码,但事实并非如此——我想,了解rails之后,可能会有一些惯例可以更快、更容易地实现这一点 我不相信我传递表单数据的方式是正确的,所以如果有人能在那里纠正我,那就太好了 看法 用户*控制器Ruby on rails 推迟创建操作,ruby-on-rails,ruby,ruby-on-rails-3,Ruby On Rails,Ruby,Ruby On Rails 3,我想有一个任何人都可以填写的表格,但必须登录才能提交——如果没有,就暂停这个过程,直到他们填写为止 我的想法是,如果有人看到表单,它会检查他们是否登录,如果没有,用户仍然可以填写表单,但会提示用户登录或注册,而不是“提交”。如果他们点击任何一个链接(登录/注册),我希望它保存表单数据,最有可能是会话,让他们登录/注册,然后让计算机检查是否有保存的表单,如果有,则显示一个类似确认的屏幕,新注册的用户可以接受它 我在下面发布了我认为可以使用的come代码,但事实并非如此——我想,了解rails之后,
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"}
我尝试了各种方法对其进行调整,但它仍然让我无法测试我的任何代码是否正常工作您的CommentsController#创建和#显示操作是什么?关于您的错误,您是否可以粘贴路径中的
保存到会话和日志以及保存到会话和注册路径的rake路由结果?因为您当时没有id
,所以应该将它们设置为收集
路由
--
不过,我的做法是将表单提交给处理每个场景的不同控制器。这样,您的CommentsController
将用于登录用户,您可以拥有一个TemporaryCommentsController
,它将处理来宾的评论
--
另外,根据评论的字段,我不知道在会话中存储它们是否是一个好主意。您可能会在会话中存储一个tmp_comment_id,并从数据库中恢复该id。另外,使用cron作业删除所有记录。(只有在“注释很大且很难序列化”的情况下,这才是一个问题)。这不是仅仅是会话[:temp_comment]=params[:comment]
?该评论是否正确显示在URL参数中?@mind.blank我更新了帖子,我无法判断我们的解决方案是否有效,因为我无法克服上面的错误,似乎您无法在会话中保存ActiveRecord模型。相反,即使我替换了comment,您也可以保存params[:comment]@laise。使用params[:comment]新建(params[:comment]),我也会收到相同的错误
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"}