首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >拖延创建动作

拖延创建动作
EN

Stack Overflow用户
提问于 2013-02-17 01:23:39
回答 1查看 57关注 0票数 2

我想要一个任何人都可以填写的表格,但必须登录才能提交--如果没有,就暂停处理,直到他们完成为止。

我的想法是,如果有人碰到表单,它会检查他们是否已登录,如果用户仍然可以填写,而是提示他们登录或注册,而不是“提交”。如果他们点击任何一个链接(登录/注册),我希望它保存表单数据,最有可能是会话,让他们登录/注册,然后让计算机检查是否有保存的表单,如果是这样,显示一个确认类似屏幕,在那里新注册的用户可以接受它。

我已经发布了下面的代码,我认为它会工作,但它不是-我在想,知道rails,可能有一些约定,这样做更快和更容易!

我不相信我传递表单数据的方式是正确的,所以如果有人能纠正我,那就太棒了!

视图

代码语言:javascript
运行
复制
<%= 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 %>

控制器

代码语言:javascript
运行
复制
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

用户*控制器

代码语言:javascript
运行
复制
def create 
  #Normal create action, under the redirect:
  if session[:temp_comment]
    redirect_to confirm_comment
  else
    redirect_to users_home_page
  end
end

我收到的错误是:

代码语言:javascript
运行
复制
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"}

我试着用不同的方式来调整它,但是它仍然把我带到这里,所以我无法测试我的代码是否正常工作。

EN

回答 1

Stack Overflow用户

发布于 2013-02-21 05:17:21

你的CommentsController#create和#显示动作是什么?关于您的错误,您能粘贴save_to_session_and_log_in_pathsave_to_session_and_sign_up_path方法的rake路由结果吗?因为此时您没有id,所以应该将它们设置为collection路由。

--

不过,我这样做的方法是将表单提交给不同的控制器,这些控制器将处理每个场景。这样,您的CommentsController将用于登录用户,并且您可以拥有一个TemporaryCommentsController来处理来宾的评论。

--

另外,根据评论的字段,我不知道将它们存储在会话中是否是一个好主意。您可能会在会话中存储一个tmp_comment_id并从DB中恢复它。同时,删除所有带有cron作业的记录。(这是一个问题,只有当“评论很大,‘很难’序列化”)。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14917085

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档