小编Tut*_*teC的帖子

怎么做一个死链接记者?

我想在我的网站上创建一个用户可以点击外部死链接报告的按钮.我在项目表中的链接列中有链接.

我想创建一个简单的电子邮件通知,其中包含项目的ID和链接.我在想创建一个表单和某种可以处理表单的控制器.

我的观点应该是这样的:

<% for items in @items %>
        <%= simple_form_for @items] do |f| %>
        <%= f.hidden field :id, :value => 'item.id' %>
        <%= f.hidden field :url, :value => 'item.link %>
        <%= f.button :submit, :value => 'report broken link' %>
    <% end %>
 <% end %>
Run Code Online (Sandbox Code Playgroud)

id和url输入不应仅仅像"报告断开链接"这样的链接可见.控制器应该拿两个参数并给我发电子邮件.

如何创建一个简单的死外部链接记者?

ruby ruby-on-rails actionmailer ruby-on-rails-3

14
推荐指数
1
解决办法
1076
查看次数

让一个NullObject在Ruby中评估为falsy

在Rails应用程序中实现Null对象模式之后(也在RubyTapas第112集中描述)我重构了一些代码,但是有一种似乎不再起作用的语法结构.

我曾经写过类似的语句current_user || redirect_out,其中,如果设置了current_user,它将返回它,如果nil它重定向,但现在current_user可能是一个实例,Null::User因此"真相",并且该片段永远不会重定向.

我尝试定义||运算符,但没有工作.有没有什么方法可以使用这个语法与null(但"truthy")对象?

ruby design-patterns

6
推荐指数
2
解决办法
620
查看次数

我怎样才能进行验收测试?

tests/acceptance/index-test.js在ember-cli版本0.0.22应用程序中有以下内容:

import startApp from '../helpers/start-app';
test('index transitions', function(){
  visit('/');
});
Run Code Online (Sandbox Code Playgroud)

当我去的时候,http://localhost:4200/tests我看到:

Died on test #1
at eval (ember-cli/tests/acceptance/index-test.js:7:5)
at requireModule (loader/loader.js:54:29)
at eval (ember-cli/tests/test-loader.js:9:7)
at Array.forEach (native)
at eval (ember-cli/tests/test-loader.js:8:8)
at requireModule (loader/loader.js:54:29)
at http://localhost:4200/tests:43:7: visit is not defined

Source: ReferenceError: visit is not defined
at Object.eval (ember-cli/tests/acceptance/index-test.js:8:7)
Run Code Online (Sandbox Code Playgroud)

看来我在加载代码时遇到了麻烦.项目中的占位符文件很有用.我怎样才能使它工作?

javascript ember.js ember-cli

4
推荐指数
1
解决办法
1254
查看次数

取消删除acts_as_paranoid在设计登录时删除用户

我有一个Rails 3.1.3应用程序,devise用于用户身份验证和软删除它们acts_as_paranoid.我希望在密码重新创建,用户注册和用户登录时取消删除帐户,因此如果他们提供已删除的电子邮件,我会抓取该帐户,重新启用该帐户,然后继续操作(密码重新创建或登录) ).

但是在Users::SessionsController#create操作中,在用户取消删除后,它会收到一个未经授权的错误(但用户现在应该可见).代码是:

def create
  # Take into account acts_as_paranoid deleted users
  resource = resource_class.only_deleted.find_by_email(params[resource_name][:email])
  resource.undelete! if resource

  resource = warden.authenticate!(:scope => resource_name, :recall => "#{controller_path}#new")
  set_flash_message(:notice, :signed_in) if is_navigational_format?
  sign_in(resource_name, resource)
  respond_with resource, :location => after_sign_in_path_for(resource)
end
Run Code Online (Sandbox Code Playgroud)

如果我resource.reload在取消删除后添加一个电话,它不会改变任何东西.如果我再次登录,用户通常会登录,因为它在之前的尝试中未被删除.

为什么会这样?如何通过一次create通话取消删除并登录?

ruby devise warden ruby-on-rails-3.1 acts-as-paranoid

3
推荐指数
1
解决办法
2477
查看次数