根据http://guides.rubyonrails.org/layouts_and_rendering.html路径越来越忽视,Ruby on Rails的
我应该能够从不同的控制器定义路径,因为我已经在我创造的动作在我micropostscontroller完成:
def create
@micropost = current_user.microposts.build(params[:micropost])
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to profile_path
else
render 'static_pages/profile'
end
end
但是,如果我没有成功创建帖子,请将页面'/ microposts'渲染为控制器不存在的主页(留空或使其太长)。当我成功创建微博时,我被重定向到配置文件路径“/ profile”,并且当我将render 'static_pages/profile'
更改为redirect_to profile_path
时,重定向就起作用。为什么浏览器忽略渲染请求并将微控制器控制器置于家中?
此外,所呈现的微观柱页面给出了一个NoMethodError:
NoMethodError in Microposts#create
undefined method `name' for nil:NilClass
<% provide(:title, @user.name) %>
app/views/static_pages/profile.html.erb:16:in `_app_views_static_pages_profile_html_erb___1610169404003779010_70327969935820'
app/controllers/microposts_controller.rb:10:in `create'
时,当重定向到,如@user是在static_pages控制器配置文件操作中定义的轮廓呈现自身的罚款。 @user = User.find_by_remember_token(cookies[:remember_token])
为什么不只是'@user = current_user'? – 2012-04-12 17:38:38
编辑以反映您的建议!我只是借用了他在他的static_pages控制器中使用的片段。 – niiru 2012-04-12 17:41:09
由于某些原因,我仍然无法获得显示的错误消息,我希望我想我需要渲染,但似乎渲染不是解决方案。 – Laser 2012-04-12 19:16:00