- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我遵循了 Michael Hartl 的“Rails 教程”一书,需要在自定义位置 (/members) 而不是站点的根目录中呈现“微博提要”。
我已经更新了 SessionsController,这样当用户登录时,他们将被重定向到新的/members URL,但是成员 View 上需要两个语句,它们会导致错误并阻止页面加载微博提要。
# app/views/members/index.html.erb
<%= render 'shared/micropost_form' %>
<%= render 'shared/feed' %>
第一个错误是:
ArgumentError in MembersController#index
First argument in form cannot contain nil or be empty
返回 raise ArgumentError, "First argument in form cannot contain nil or be empty"unless object
第二个错误(在删除第一个渲染语句时看到)返回 undefined method 'any?'对于 nil:NilClass
部分原因是因为要在 /members
呈现“微博提要”,app/views/members/index.html.erb
似乎需要访问app/controllers/microposts_controller.rb
,我不确定如何处理。
更新:
微博 Controller .rb
# controllers/micropost_controller.rb
class MicropostsController < ApplicationController
before_action :logged_in_user, only: [:create, :destroy]
before_action :correct_user, only: :destroy
def create
@micropost = current_user.microposts.build(micropost_params)
if @micropost.save
flash[:success] = "Micropost created!"
redirect_to '/members'
else
@feed_items = []
render '/members'
end
end
def destroy
@micropost.destroy
flash[:success] = "Micropost deleted"
redirect_to request.referrer || '/members'
end
private
def micropost_params
params.require(:micropost).permit(:content, :picture)
end
def correct_user
@micropost = current_user.microposts.find_by(id: params[:id])
redirect_to '/members' if @micropost.nil?
end
end
_micropost_form.html.erb
# shared/_micropost_form.html.erb
<%= form_for(@micropost, html: { multipart: true }) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Compose new micropost (420 chars max)..." %>
</div>
<%= f.submit "Post", class: "btn btn-primary" %>
<span class="picture">
<%= f.file_field :picture, accept: 'image/jpeg,image/gif,image/png' %>
</span>
<% end %>
<script type="text/javascript">
$('#micropost_picture').bind('change', function() {
size_in_megabytes = this.files[0].size/1024/1024;
if (size_in_megabytes > 5) {
alert('Maximum file size is 5MB. Please choose a smaller file.');
}
});
</script>
_feed.html.erb
# shared/_feed.html.erb
<% if @feed_items.any? %>
<ol class="microposts">
<%= render @feed_items %>
</ol>
<%= will_paginate @feed_items %>
<% end %>
MembersController(根据下面@Mandeep 的建议更新)
class MembersController < ApplicationController
def index
@micropost = current_user.microposts.build
@feed_items = current_user.microposts
end
end
最佳答案
您没有在偏音中传递参数。您需要执行以下操作:
<%= render 'shared/micropost_form', :locals => { :micropost => @micropost } %>
<%= render 'shared/feed', :locals => { :feed_items => @feed_items } %>
请记住,您需要在 index
方法中包含这两个变量:@micropost
和 @feed_items
。
关于ruby-on-rails - 在自定义位置/ View 中呈现 Rails 教程中的 'micropost feed'?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30930287/
我正在学习 Michael Hartl 在 http://ruby.railstutorial.org 上的 Ruby on Rails 教程.我在第 11 章遇到问题,特别是在尝试删除微博时。 我和
以前可以,为什么现在不行了?我试图仅由登录用户创建帖子。还是我的路由问题?我的路由是资源:用户做资源:微博结束 微博 Controller def create @micropost = cu
在Hartl Rails教程章节13.4.1 Basic image upload我们添加了用于图像上传的载波 gem。 但是,在生成 uploader 并将迁移添加到 Microposts 模型后,
我遵循了 Michael Hartl 的“Rails 教程”一书,需要在自定义位置 (/members) 而不是站点的根目录中呈现“微博提要”。 我已经更新了 SessionsController,这
错误输出为: NoMethodError in MembersController#index undefined method `total_pages' for # 应用程序跟踪是: app/v
我是一名优秀的程序员,十分优秀!