- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我将表单部分用于创建微博,如 Listing 10.33 所示与 <%= render 'shared/error_messages', object: f.object %>
并按照指示更新相应的 View 文件。但是,我无法通过 Rspec 测试,因为我不断收到“未定义的局部变量或类的方法'对象'...”有什么想法吗?
app/views/shared/_micropost_form.html.erb
<%= form_for(@micropost) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<div class="field">
<%= f.text_area :content, placeholder: "Compose new micropost..." %>
</div>
<%= f.submit "Post", class: "btn btn-large btn-primary" %>
<% end %>
<% if object.errors.any? %>
<div id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize(object.errors.count, "error") %>.
</div>
<ul>
<% object.errors.full_messages.each do |msg| %>
<li>* <%= msg %></li>
<% end %>
</ul>
</div>
<% end %>
<% provide(:title, 'Sign up') %>
<h1>Sign up</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= render 'fields', f: f %>
<%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>
</div>
</div>
<% provide(:title, "Edit user") %>
<h1>Update your profile</h1>
<div class="row">
<div class="span6 offset3">
<%= form_for(@user) do |f| %>
<%= render 'shared/error_messages', object: f.object %>
<%= render 'fields', f: f %>
<%= f.submit "Save changes", class: "btn btn-large btn-primary" %>
<% end %>
<%= gravatar_for @user %>
<a href="http://gravatar.com/emails" target="_blank">change</a>
</div>
</div>
require 'spec_helper'
describe "Authentication" do
subject { page }
describe "signin page" do
before { visit signin_path }
it { should have_selector('h1', text: 'Sign in') }
it { should have_selector('title', text: 'Sign in') }
end
describe "signin" do
before { visit signin_path }
describe "with invalid information" do
before { click_button "Sign in" }
it { should have_selector('title', text: 'Sign in') }
it { should have_error_message('Invalid') }
it { should_not have_link('Users', href: users_path) }
it { should_not have_link('Sign out', href: signout_path) }
describe "after visiting another page" do
before { click_link "Home" }
it { should_not have_selector('div.alert.alert-error') }
end
end
describe "with valid information" do
let(:user) { FactoryGirl.create(:user) }
before { sign_in user }
it { should have_selector('title', text: user.name) }
it { should have_link('Users', href: users_path) }
it { should have_link('Profile', href: user_path(user)) }
it { should have_link('Settings', href: edit_user_path(user)) }
it { should have_link('Sign out', href: signout_path) }
it { should_not have_link('Sign in', href: signin_path) }
describe "followed by signout" do
before { click_link "Sign out" }
it { should have_link('Sign in') }
end
end
end
describe "authorization" do
describe "for non-signed-in users" do
let(:user) { FactoryGirl.create(:user) }
describe "in the Users controller" do
it { should_not have_link('Profile', href: user_path(user)) }
it { should_not have_link('Settings', href: edit_user_path(user)) }
describe "visiting the edit page" do
before { visit edit_user_path(user) }
it { should have_selector('title', text: 'Sign in') }
end
describe "submitting to the update action" do
before { put user_path(user) }
specify { response.should redirect_to(signin_path) }
end
describe "visiting the user index" do
before { visit users_path }
it { should have_selector('title', text: 'Sign in') }
end
end
describe "when attempting to visit a protected page" do
before do
visit edit_user_path(user)
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_button "Sign in"
end
describe "after signing in" do
it "should render the desired protected page" do
page.should have_selector('title', text: 'Edit user')
end
describe "when signing in again" do
before do
visit signin_path
fill_in "Email", with: user.email
fill_in "Password", with: user.password
click_button "Sign in"
end
it "should render the default (profile) page" do
page.should have_selector('title', text: user.name)
end
end
end
describe "in the Microposts controller" do
describe "submitting to the create action" do
before { post microposts_path }
specify { response.should redirect_to(signin_path) }
end
describe "submitting to the destroy action" do
before { delete micropost_path(FactoryGirl.create(:micropost)) }
specify { response.should redirect_to(signin_path) }
end
end
end
end
describe "as wrong user" do
let(:user) { FactoryGirl.create(:user) }
let(:wrong_user) { FactoryGirl.create(:user, email: "wrong@example.com") }
before { sign_in user }
describe "visiting Users#edit page" do
before { visit edit_user_path(wrong_user) }
it { should_not have_selector('title', text: full_title('Edit user')) }
end
describe "submitting a PUT request to the Users#update action" do
before { put user_path(wrong_user) }
specify { response.should redirect_to(root_path) }
end
end
describe "as non-admin user" do
let(:user) { FactoryGirl.create(:user) }
let(:non_admin) { FactoryGirl.create(:user) }
before { sign_in non_admin }
describe "submitting a DELETE request to the Users#destroy action" do
before { delete user_path(user) }
specify { response.should redirect_to(root_path) }
end
end
end
end
require 'spec_helper'
describe "User pages" do
subject { page }
describe "index" do
let(:user) { FactoryGirl.create(:user) }
before(:all) { 30.times { FactoryGirl.create(:user) } }
after(:all) { User.delete_all }
before(:each) do
sign_in user
visit users_path
end
it { should have_selector('title', text: 'All users') }
it { should have_selector('h1', text: 'All users') }
describe "pagination" do
it { should have_selector('div.pagination') }
it "should list each user" do
User.paginate(page: 1).each do |user|
page.should have_selector('li', text: user.name)
end
end
end
describe "delete links" do
it { should_not have_link('delete') }
describe "as an admin user" do
let(:admin) { FactoryGirl.create(:admin) }
before do
sign_in admin
visit users_path
end
it { should have_link('delete', href: user_path(User.first)) }
it "should be able to delete another user" do
expect { click_link('delete') }.to change(User, :count).by(-1)
end
it { should_not have_link('delete', href: user_path(admin)) }
end
end
end
describe "signup page" do
before { visit signup_path }
it { should have_selector('h1', text: 'Sign up') }
it { should have_selector('title', text: 'Sign up') }
end
describe "profile page" do
let(:user) { FactoryGirl.create(:user) }
let!(:m1) { FactoryGirl.create(:micropost, user: user, content: "Foo") }
let!(:m2) { FactoryGirl.create(:micropost, user: user, content: "Bar") }
before { visit user_path(user) }
it { should have_selector('h1', text: user.name) }
it { should have_selector('title', text: user.name) }
end
describe "microposts" do
it { should have_content(m1.content) }
it { should have_content(m2.content) }
it { should have_content(user.microposts.count) }
end
describe "signup" do
before { visit signup_path }
let(:submit) { "Create my account" }
describe "with invalid information" do
it "should not create a user" do
expect { click_button submit }.not_to change(User, :count)
end
describe "after submission" do
before { click_button submit }
it { should have_selector('title', text: 'Sign up') }
it { should have_content('error') }
end
end
describe "with valid information" do
before { valid_signup }
it "should create a user" do
expect { click_button submit }.to change(User, :count).by(1)
end
describe "after saving the user" do
before { click_button submit }
let(:user) { User.find_by_email('user@example.com') }
it { should have_selector('title', text: user.name) }
it { should have_success_message('Welcome') }
it { should have_link('Sign out') }
end
end
end
describe "edit" do
let(:user) { FactoryGirl.create(:user) }
before do
sign_in user
visit edit_user_path(user)
end
describe "page" do
it { should have_selector('h1', text: "Update your profile") }
it { should have_selector('title', text: "Edit user") }
it { should have_link('change', href: 'http://gravatar.com/emails') }
end
describe "with invalid information" do
before { click_button "Save changes" }
it { should have_content('error') }
end
describe "with valid information" do
let(:new_name) { "New Name" }
let(:new_email) { "new@example.com" }
before do
fill_in "Name", with: new_name
fill_in "Email", with: new_email
fill_in "Password", with: user.password
fill_in "Confirm Password", with: user.password
click_button "Save changes"
end
it { should have_selector('title', text: new_name) }
it { should have_success_message }
it { should have_link('Sign out', href: signout_path) }
specify { user.reload.name.should == new_name }
specify { user.reload.email.should == new_email }
end
end
end
最佳答案
哇,现在我觉得自己像个傻瓜……我留下了额外的 <%= render 'shared/error_messages' %>
在 user fields partial
希望这会帮助其他遇到同样问题的人。
关于ruby-on-rails - Hartl 第 10 章未定义的局部变量或方法 'object',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11158850/
我正在按照 Hartl 的教程学习 Rails,并对它进行自己的调整。现在,我想扩展它并添加一个发送电子邮件的联系表单。本教程中不包含此类内容,但在第 10 章结束时,我们学会了使用邮件程序方法,并且
这是我在使用 bundle exec rspec spec/requests/static_pages_spec.rb 时遇到的错误。 我已经包含了 gem 测试单元。 请帮助我,我是 Rails 的
我在尝试实现 Hartl 的 Ruby on Rails 教程中的示例应用程序时遇到了一个奇怪的问题。 当我删除微博时,会发生以下情况: 微博被删除。 用户也会被删除。 定向至“注册”页面。 只应该发
我正在学习 Michael Hartl 的优秀 Rails 教程,并且我正在努力了解种子用户的一个方面。我刚刚完成第 9 章,所以我有一个具有管理员权限的工作登录/注销/编辑/删除系统。作为本章的一部
我将表单部分用于创建微博,如 Listing 10.33 所示与 并按照指示更新相应的 View 文件。但是,我无法通过 Rspec 测试,因为我不断收到“未定义的局部变量或类的方法'对象'...”有
我是 Rails 的新手,但我在 hartls 教程的第 11 章中一直遇到问题,目前是 给 Missing partial microposts/_micropost with {:locale=>
阅读 Hartl 的教程,地址为 list 10.42 在 microposts Controller 中,我们有 def create @micropost = current_user
我已经完成了本教程,但自第 7 节制作注册表单以来,我在 CSS 渲染方面遇到了一些小问题。这就是我得到的: 它应该是这样的: 这是相关的 CSS: @mixin box_sizing { -mo
我刚刚完成了 Hartl 教程的第 8 章,但当我尝试运行测试时,不断出现错误。我收到 3 个相同的错误,该问题似乎源于用户登录测试,其中在固定装置集中(用户)中未找到固定装置 :michael。 这
对于我的测试失败的任何帮助,我将不胜感激。我是根据 Michael Hartl 教程做的,我几乎尝试了所有方法并阅读了很多相关内容,但仍然一无所知。坦克斯 我的测试: 描述“分页”做 before(:
我刚刚完成了 Hartl 教程的第 10 章,但我的 CSS 没有加载到 Heroku 中。 我试过运行 $heroku run bundle exec rake assets:precompile
我正在研究 Michael Hartl 的 Ruby on Rails 教程,我在第 9 章遇到了错误。 错误: 1) Error: UsersIndexTest#test_index_as_ad
我是 RoR 的新手,一直在努力完成 Hartl教程(很棒)。我已经成功地跟进了第 9 章(稍微调整了一下,因为我的最终目标不是制作微博站点)。那时,我决定要在我的应用程序中添加一个“记住我”复选框并
我正在关注 Michael Hartl 教程并在 Listing 10.14 之后,他说 There is one subtlety, though: on failed micropost subm
我以前使用过 Rails 并安装了其他版本。我目前正在尝试遵循 Hartl 的教程,他要求使用特定版本的 Rails 和特定的 gem。 当我尝试运行 rails _5.0.3_ new sample
我一直在关注 Ruby-on-Rails tutorial 中的练习由 M. Hartl 着。我已经完成了第 4 章中的所有练习,但仍停留在这一章上: Create three hashes call
我似乎左右都遇到了失败...我检查了我的代码,一切都已定义并且拼写检查正在检查...这是我的失败...: Failures: 1) User pages index should list eac
我正在写关于我在完成 Michael Hartl 的 Ruby on Rails 教程时遇到的问题。问题是 css 不会更改用于密码确认的输入字段的外观。所有其他输入字段的外观都受 css 规则的影响
我正在编写 Michael Hartl 的教程。我在第 6 章。我要进行用户验证。下面的代码是我被告知要使用的代码,但它不起作用。我收到错误消息 syntax error, unexpected en
我一遍又一遍地检查代码,但我似乎找不到下拉菜单不起作用的原因。因此,我看不到下拉菜单中的链接是否正常工作。此外,标题现在切断了 。任何帮助是极大的赞赏。这是我的代码。 _header.html.erb
我是一名优秀的程序员,十分优秀!