这是一个后续问题:在一个动作中呈现不同的视图
我得到的错误是:
Template is missing
Missing template items/show, application/show with {:locale=>[:en], :formats=>[:html], :handlers=>[:erb, :builder, :coffee]}.
应该注意的是,我将show.html.erb
文件复制到两个文件show_with_edit.html.erb
和show_with_star.erb
,并删除show.html.erb
以避免重复。
我的代码posts_controller.rb
def show
if signed_in?
show_signed_in
else
show_not_signed_in
end
end
def show_signed_in
#add methods here
@post = Post.find(params[:id])
respond_to do |format|
format.html # show_with_edit.html.erb
format.json { render json: @post }
end
render 'show_with_edit'
end
def show_not_signed_in
#add methods here
@post = Post.find(params[:id])
respond_to do |format|
format.html # show_with_star.html.erb
format.json { render json: @post }
end
render 'show_with_star'
end
我知道现在这两种不同的观点是相同的,我现在只是放了不同的文字。一旦我确定了这一点,我将为每个视图添加它自己的方法和内容等。