小编shi*_*ara的帖子

ActionMailer中的relative_url_root

什么相当于relative_url_rootActionMailer?

我已尝试将其设置为default_url_options,但它会将参数附加到查询字符串中.

添加:skip_relative_url_root = false也不起作用.

使用:host = 'somehost.com/subdir' 确实有效,但这是否合适?

谢谢!

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

5
推荐指数
1
解决办法
627
查看次数

在JS中,使用HAML替换ERB失败

问候!

我一直在玩HAML并将一些视图转换.erb.haml.但是当我试图转换.js.erb视图时,它就不会执行.例如,似乎我的工作本来应该.js.haml没有执行.js.erb.

这是我的.js.erb(也适用):

<% if @quote.errors.any? && @quote.approved? %>
  $("#data_form").html("<%= escape_javascript(render(:partial => "form")) %>");
<% else %>
  $("#data_grid").prepend("<%= escape_javascript(render :partial => "quote", :locals => { :quote => @quote }) %>");
  $("#quote_author,#quote_body").each(function(i,e) {
    $(this).val("");
  });
<% end %>
Run Code Online (Sandbox Code Playgroud)

这就是我用它取而代之的:

-if @quote.errors.any? && @quote.approved?
  $("#data_form").html("#{escape_javascript(render(:partial => "form"))}");
-else
  $("#data_grid").prepend("#{escape_javascript(render :partial => "quote", :locals => { :quote => @quote })}");
  $("#quote_author,#quote_body").each(function(i,e) {
    $(this).val("");
  });
Run Code Online (Sandbox Code Playgroud)

有什么问题以及如何解决?

javascript haml ruby-on-rails ruby-on-rails-3

5
推荐指数
1
解决办法
2302
查看次数

存储桶策略和签名网址之间是否存在冲突?

我的存储桶中的某些文件设置为public-read(ACL).所以我在某处读到设置存储桶策略可以自动将存储桶中的所有文件设置为私有.

bucketname是实际存储桶名称的占位符.我的存储桶政策是:

{
    "Version": "2008-10-17",
    "Id": "Policy1331182170360",
    "Statement": [
        {
            "Sid": "Stmt1331182162671",
            "Effect": "Deny",
            "Principal": {
                "AWS": "*"
            },
            "Action": "s3:GetObject",
            "Resource": "arn:aws:s3:::bucketname/*"
        }
    ]
}
Run Code Online (Sandbox Code Playgroud)

在我的一个控制器中,我有:

    s3 = Aws::S3.new(APP_CONFIG['amazon_access_key_id'], APP_CONFIG['amazon_secret_access_key'])
    bucket_gen = Aws::S3Generator::Bucket.create(s3, APP_CONFIG['amazon_bucket_name'])
    signed_url = bucket_gen.get("#{URI.unescape(URI.parse(URI.escape(@song.encoded_file_url)).path[1..-1])}", 10.minute) 
    redirect_to signed_url and return
Run Code Online (Sandbox Code Playgroud)

我被重新指挥,但我一直拒绝访问.但是,如果我删除了存储桶策略,我会被重定向到已签名的网址,一切正常.

最初,我认为我签署我的网址的方式存在问题.所以我打开了Amazon Web Console,并手动将文件权限设置为private.对于此测试,我删除了存储桶策略.导航到文件URL(未签名),无法访问.这是正常的.在第二次测试中,我签署了URL并可以访问该文件.这意味着我签约的方式没有错.

存储桶策略和签名网址之间是否存在冲突?

ruby-on-rails amazon-s3 amazon-web-services ruby-on-rails-3

5
推荐指数
1
解决办法
1416
查看次数

用户#show中的NoMethodError

我正在关注rails教程@ http://railstutorial.org

在第11章,我遇到了显示用户微博的问题.

根据本教程,RSPEC测试应该通过.但是,它失败了


 1) UsersController GET 'show' should show the user's microposts
 Failure/Error: get :show, :id => @user
 undefined method `model_name' for NilClass:Class
 # ./app/views/users/show.html.erb:10:in `_app_views_users_show_html_erb__49
 # ./spec/controllers/users_controller_spec.rb:71
Run Code Online (Sandbox Code Playgroud)

当我尝试访问与其关联的微博的用户页面时,我得到一个例外:

NoMethodError in Users#show

Showing C:/Documents and Settings/XXXXX/workspace/sample_app/app/views/users/show.html.erb where line #10 raised:

undefined method `model_name' for NilClass:Class
Extracted source (around line #10):

7:       </h1>
8:       <% unless @user.microposts.empty? %>
9:         <table class="microposts" summary="User microposts">
10:           <%= render @microposts %>
11:         </table>
12:         <%= will_paginate @microposts %>
13:       <% end %>
Rails.root: …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails rspec2 ruby-on-rails-3

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

捆绑问题

我尝试命令,bundle install --local 但它显示问题:

-bash: /usr/local/bin/bundle: /usr/local/bin/ruby: bad interpreter: No such file or directory. 
Run Code Online (Sandbox Code Playgroud)

请帮我.

ruby install bundle ruby-on-rails

4
推荐指数
3
解决办法
2万
查看次数

Ember.js Handlebars全球化方法

我想在我的Rails应用程序中使用ember.js.

有一个特定于全局化处理程序栏视图模板内容的问题.

我是否应该尝试创建myview.handlebars.erb并在服务器端获取翻译的字符串(没有尝试过这个)或者我应该为每种语言创建单独的把手模板(听起来不像真的干,除非有更清洁的方式)?

什么是理想的解决方法?

ruby-on-rails ruby-on-rails-3.1 handlebars.js ember.js

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

Mongoid查询!限制和订单的组合

在我的rails应用程序中,我想要获取具有唯一值的10个最后记录.

我试过了:

@users = User.all(:limit => 10, :sort => [:created_at, :desc]).map{|t| t.first_name}.uniq
Run Code Online (Sandbox Code Playgroud)

但,

限制不能像我期望的那样工作..

我希望'limit'能够最后影响查询.

有任何想法吗?

mongodb mongoid

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

rails - 当用户手动输入错误的URL时重定向

如果用户输入错误的网址,如何将拼写错误的网址重定向到某个默认网址?

ruby ruby-on-rails

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

request.env ['CONTENT_TYPE']和request.content_type之间有什么区别?

我看到两个不同的值request.env['CONTENT_TYPE']request.content_type.

从单独的应用程序,我发送请求到我的Rails应用程序并明确设置Content-Typetext/xml.

以下是我在Rails应用程序中看到的另一端:

request.env['CONTENT_TYPE'] = "text/xml"
request.content_type = "application/xml"
Run Code Online (Sandbox Code Playgroud)

request.content_type 实际上是 action_dispatch.request.content_type

  1. request.env['CONTENT_TYPE']和之间有什么区别request.content_type
  2. 为什么这两个值不同?

content-type ruby-on-rails httprequest actiondispatch ruby-on-rails-3

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

ActiveAdmin :: Devise :: SessionsController #creore中的ArgumentError

我安装了ActiveAdmin并使用默认的管理员名称和密码登录,但有一个错误,希望有人可以帮助我.谢谢 !

这是错误:

ArgumentError in ActiveAdmin::Devise::SessionsController#create 
wrong number of arguments (2 for 1)
Rails.root: E:/Ruby/challenger2 - Copy

Application Trace | Framework Trace | Full Trace
app/helpers/sessions_helper.rb:2:in `sign_in'
Run Code Online (Sandbox Code Playgroud)

sessions_helper.rb文件的一部分:

module SessionsHelper
  def sign_in(user)

    self.current_user = user    
  end

  def current_user=(user)
    @current_user = user
  end

  def current_user
    @current_user ||= user_from_remember_token
  end

  def signed_in?
    !current_user.nil?
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails devise ruby-on-rails-3 activeadmin

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