小编Nda*_*ior的帖子

请在Rails中解释form_for方法

这不是一个真正的故障排除问题,而是一个解释请求.我很难理解form_for方法的工作原理.有人可以向我解释这种方法在这种情况下的作用.这是我在博客应用程序上为评论功能创建表单的代码.我的代码有效,所以我只想了解它的工作原理和工作原理.谢谢!!

这是我的新评论表:

<%= form_for([@post, @post.comments.build]) do |c| %> 
<p>
    <%= c.label :content, class: "col-md control-label" %><br> 
    <%= c.text_area :content, rows: "10", class: "form-control"  %>
</p> 

<p> 
    <%= c.submit %> 
</p> 

<% end %> 
Run Code Online (Sandbox Code Playgroud)

这是我的评论代码控制器:

class CommentsController < ApplicationController 
    def new 
        @post = Post.find(params[:post_id])
    end 

    def create 
        @post = Post.find(params[:post_id]) 
        @comment = @post.comments.create(comment_params) 
        @comment.user_id = current_user.id 
        @comment.save 
        #redirect_to post_path(@post) 
        redirect_to posts_path 

    end 

    private 

    def comment_params 
        params.require(:comment).permit(:content)
    end
 end 
Run Code Online (Sandbox Code Playgroud)

特别是,form_for的"[@ post,@ post.comments.build]"参数是做什么的?

ruby model-view-controller ruby-on-rails form-for

3
推荐指数
1
解决办法
1453
查看次数

我怎样才能更多地重构这个ruby代码?

我正在尝试反应这段代码.有什么建议?

@contest_users = [] 
@contest.squads.each do |squad|
  @contest_users << squad.users[0]
end 
Run Code Online (Sandbox Code Playgroud)

ruby refactoring

1
推荐指数
1
解决办法
46
查看次数

使用 Sinon 在 Promise 中存根代码并返回 Resolve()

最后一天我一直被困在这个问题上,我决定需要帮助。我有以下 javascript 类方法,我正在为其编写单元测试:

getUser = function(req, res){
  return new Promise(function(resolve, reject){
      User.getByUserId(user_id, function(err, user){
        if (err){
          return reject({ message: defaultErrorMessage })
        } else {
          return user ? resolve() : reject({ message: 'The specified user does not exist.' })
        }
      })
  }).then(function(){

        ....Promise Chain Continues...

})
Run Code Online (Sandbox Code Playgroud)

本质上,我试图做的是编写一个单元测试,用以下内容存根 User.getByUserId mongoose 调用:

let resolvedPromise = sinon.stub().resolves();
sinon.stub(User,'getByUserId').returns(resolvedPromise);
Run Code Online (Sandbox Code Playgroud)

我的想法是,我想删除查找用户并返回已解决的承诺的数据库调用,以便承诺链可以继续,但是我当前的解决方案不允许承诺链继续。

我如何在承诺中包含 sinon 存根并让该存根返回一个 resolve() 以允许承诺链继续?帮助将不胜感激!

javascript unit-testing asynchronous promise sinon

1
推荐指数
1
解决办法
5260
查看次数

Ruby on Rails“SystemStackError 堆栈级别太深”错误

我是 Ruby on Rails 的新手,我正在尝试构建一个简单的博客平台,允许使用设计进行用户身份验证。当我填写带有标题和内容字段的帖子表单时,当我按下“创建帖子”按钮时,我收到一个错误消息

SystemStackError in PostsController#create stack level too deep
Run Code Online (Sandbox Code Playgroud)

我的 PostsController 中的“创建”操作似乎是问题的根源。谁能帮我?这是我的 PostsController 的样子:

class PostsController < ApplicationController

    before_action :authenticate_user! 

    def index
      @posts = Post.all 
    end 

    def new 
      @post = Post.new
    end 

    def create
      @post = Post.new(params[:post])
    end 

    def show 
      @post = Post.find(params[:id])
    end 

    private 

    def params
      params.require(:post).permit(:title, :content)
    end


end
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails

0
推荐指数
1
解决办法
1191
查看次数