“Def create”手动导轨

时间:2012-01-10 08:07:37

标签: ruby-on-rails ruby ruby-on-rails-3 scaffolding

手动执行“创建”功能有什么办法吗? 我有一个脚手架,(模型/控制器/视图),所以我想要做的是改变一点用户给我的参数。

 def create

  @meme = Meme.new(params[:meme])

  respond_to do |format|
    if @meme.save
      format.html { redirect_to @meme, notice: 'Meme was successfully created.' }
      format.json { render json: @meme, status: :created, location: @meme }
    else
      format.html { render action: "new" }
      format.json { render json: @meme.errors, status: :unprocessable_entity }
    end
  end
end

有没有办法做类似的事情:

def create

  @meme = Meme.new
  @meme.name = params([:name])
  @meme.id = params([:id])
  @meme.url = @meme.name+@meme.id 




  respond_to do |format|
    if @meme.save
      format.html { redirect_to @meme, notice: 'Meme was successfully created.' }
      format.json { render json: @meme, status: :created, location: @meme }
    else
      format.html { render action: "new" }
      format.json { render json: @meme.errors, status: :unprocessable_entity }
    end
  end
end

正如您在上一个示例中所看到的,我想保存一个连接名称和ID的URL, 有没有办法从控制器实现这一点。

提前致谢。

1 个答案:

答案 0 :(得分:2)

您正在寻找的代码是两种样本的组合:

def create

  @meme = Meme.new(params[:meme])
  @meme.url = "#{@meme.name}-#{@meme.id}" 

  respond_to do |format|
    if @meme.save
      format.html { redirect_to @meme, notice: 'Meme was successfully created.' }
      format.json { render json: @meme, status: :created, location: @meme }
    else
      format.html { render action: "new" }
      format.json { render json: @meme.errors, status: :unprocessable_entity }
    end
  end
end

我在名字和身份证之间划了一条冲刺,只是为了踢。

您可能还想考虑在Meme模型中的before_save钩子中执行此操作,这比在控制器中使用它更清晰。祝你好运!