如何使用默认模板创建对象并跳过在新视图中呈现表单

时间:2016-02-11 14:52:09

标签: ruby-on-rails methods

我有一个PagesController,允许用户在该页面上创建一个包含以下数据呈现的页面

headline
background image
text color
buttontext
button text color
buttoncolor

我想这样做,以便当用户点击新页面按钮时,它会跳过新视图中的表单,只创建包含默认图像,文本等的页面。

如何跳过新方法/表单,只在数据库中创建/保存对象?

1 个答案:

答案 0 :(得分:2)

根据上面的评论我发现了。

pages_controller.rb

def new
    @page = Page.new(default)
    @page.user = current_user 

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

  def create 
  end

最后,我将默认变量存储在默认方法的私有哈希中。

private

 def default
      {:headline => "The Wildest Landing Page In The West", :color => "White",  :buttoncolor => "warning", :buttontext => "Button Text", :image => nil, :user_id => current_user}
    end

我正在使用paperclip gem,所以我不得不在视图中添加默认背景图像,比如使用css和简单的if语句。不确定这是否是最好的方法,但它正在发挥作用。

  <% if @page.image_file_name === nil %>
       <div class="default-bg bg-image">

    <% else %>
        <div class="bg-image" style="background-image: url('<%= @page.image.url %>'); no-repeat center center fixed; background-size: cover; -moz-background-size: cover; -o-background-size: cover; -webkit-background-size: cover;">
            <h1>no image here</h1>
    <% end %>

感谢您指出我正确的方向!