我有一个PagesController,允许用户在该页面上创建一个包含以下数据呈现的页面
headline
background image
text color
buttontext
button text color
buttoncolor
我想这样做,以便当用户点击新页面按钮时,它会跳过新视图中的表单,只创建包含默认图像,文本等的页面。
如何跳过新方法/表单,只在数据库中创建/保存对象?
答案 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 %>
感谢您指出我正确的方向!