我在使用 Devise 和 Simple_Form 的应用程序中遇到了最奇怪的问题。我的所有功能都工作正常,现在当我去“更新”我的帐户时,它只是取消了该帐户。我没有更改控制器甚至编辑表单中的任何内容。我发现这个问题在推送到 Heroku 后逐渐出现,并注意到开发和生产中现在的变化,所以我不确定是什么导致了这个问题。
解决方案:在我的完全自动生成的设计表单中,有一个缺失</div>导致我的更新和取消功能混合在一起。由于设计格式化表单的方式,在所有代码中都不清楚该标签是否未关闭!棘手的捕获。
有没有办法覆盖设备默认值来修复这个奇怪的错误?
<%= form_for(resource,
as: resource_name,
url: registration_path(resource_name),
html: { method: :put }) do |f| %>
<%= devise_error_messages! %>
<div>
<%= f.label :profile_photo %><br />
<%= f.file_field :profile_photo, label: "Image" %>
<%= image_tag (current_owner.profile_photo.url(:thumb)) %>
**</div>**
<div>
<%= f.submit "Update" %>
</div>
<% end %>
<h3>Cancel my account</h3>
<p>Unhappy? <%= button_to "Cancel my account", registration_path(resource_name),
data: { confirm: "Are you sure?" }, method: :delete %></p>
Run Code Online (Sandbox Code Playgroud) 在梳理了大量修复程序后,我陷入了停滞。我是 Ruby/编程的新手,并且在今天早些时候安装了 Ruby/RVM 非常好,可以正常工作(单用户),但是发生了一些变化,我尝试修复它可能造成的损害大于好处。
本质上,当我尝试运行我的基本 .rb 文件时,它给了我:
ruby: No such file or directory -- doom.rb (LoadError)
Run Code Online (Sandbox Code Playgroud)
我尝试卸载 RVM 并重新安装,我认为这就是我搞砸的地方。我用过rvm implode,我认为这是一个不完整的删除。现在当我尝试它时,它只是说command not found。大多数其他修复程序都会显示相同的消息,repair以及get head,你有什么。
如果我尝试重新安装任何存在/不存在的东西,我会看到一个充满权限拒绝错误和已经存在的对象的屏幕:
rm: /Users/caroljones/.rvm/src/rvm/patchsets/ruby/1.9.3/p385: Permission denied
.
.
.
scripts/wrapper: Can't unlink already-existing object
scripts/zsh/: Can't update time for scripts/zsh
scripts/zsh/Completion/: Can't update time for scripts/zsh/Completion
scripts/zsh/Completion/_rvm: Can't unlink already-existing object
tar: Error exit delayed from previous errors.
Could not extract RVM sources.
Run Code Online (Sandbox Code Playgroud)
如果我运行echo $PATH,我会得到这个:
/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin:/usr/local/bin/
Run Code Online (Sandbox Code Playgroud)
Ruby 安装正常: …
我正在运行RSpec 3测试,并且在这个特定路径上遇到同样的错误:
Failure/Error: visit book_path
ActionController::UrlGenerationError:
No route matches {:action=>"show", :controller=>"books"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)
我的测试还没完成,所以我确定后面的一些代码可能不正确.但我无法让我的访问路径行运行:
...
book = FactoryGirl.build(:book)
reviews = FactoryGirl.build_list(:review, 5, book: book)
visit book_path
reviews.each do |review|
expect(page).to have_content(review.rating)
expect(page).to have_content(review.body)
expect(page).to have_content(review.timestamp)
end
expect(page).to have_content('House of Leaves')
expect(page).to have_content('Mark Z. Danielewski')
expect(page).to have_content('Horror')
end
Run Code Online (Sandbox Code Playgroud)
在我的控制器中,我将show定义为:
def show
@book = Book.find(params[:id])
@reviews = @book.reviews.order('created_at DESC')
@review = Review.new
end
Run Code Online (Sandbox Code Playgroud)
我的资源:
resources :books, only: [:index, :show, :new, :create] do
resources :reviews, only: [:show, :new, :create] do
end
Run Code Online (Sandbox Code Playgroud) capybara ×1
devise ×1
factory-bot ×1
heroku ×1
rspec ×1
rspec-rails ×1
ruby ×1
rvm ×1
simple-form ×1