小编Mar*_*rty的帖子

宝石更新后:测试失败,"资产未声明在生产中预编译"

由于我更新了几个宝石,所有测试都失败并出现错误:

ActionView :: Template :: Error:未声明资产在生产中预编译.

添加Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb和重新启动服务器

应用程序/视图/布局/ _faviconsheader.html.erb:14:在 _app_views_layouts__faviconsheader_html_erb__1320

应用程序/视图/布局/ application.html.erb:21:在 _app_views_layouts_application_html_erb__4340

该错误似乎是指_faviconsheader.html.erb包含该行的部分:

<%= content_tag :link, nil, rel: :manifest, href: image_path("favicons/manifest.json.erb") %>
Run Code Online (Sandbox Code Playgroud)

这个部分载入application.html.erb:<%= render partial: 'layouts/faviconsheader' %>.

知道是什么导致了这个错误,该怎么办?在gem更新之前,所有测试都通过了.

我使用Rails 4.2.5.其中一个更新的宝石是sprockets(更新的链轮到版本3.5.2).我在github上读到有关链轮4出现问题的内容,但我没有使用版本4.


PS即使我添加Rails.application.config.assets.precompile += %w( favicons/manifest.json.erb )config/initializers/assets.rb错误仍然存在.但即使这样可行,我也想了解为什么会出现这个问题,除了更新一些宝石之外没有任何变化.

ruby ruby-on-rails sprockets asset-pipeline

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

如何在 Gitlab.com 上验证 ssh 密钥

我第一次在 Gitlab.com 上设置 SSH 密钥。我一直在验证您是否可以连接:ssh -T git@gitlab.example.com

gitlab.example.com应该用你的 Gitlab 实例 url 替换,但我不断收到“ssh:无法解析主机名:名称或服务未知”。

我正在使用 Gitlab SaaS 解决方案,并尝试了各种格式,例如:

ssh -T git@gitlab.com/my-workspace-name
ssh -T git@gitlab.com:my-workspace-name
ssh -T git@gitlab.com/my-workspace-name/project-name
Run Code Online (Sandbox Code Playgroud)

应该有效的正确格式是什么?

git ssh gitlab

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

如何在json中渲染任何内容?

我正在测试以下方法:

  def destroy
    if @article.destroy
      render json nothing: true, message: "removed", status: :ok
    else
      render json: @article, message: "Failed to remove", status: :bad_request
    end
  end
Run Code Online (Sandbox Code Playgroud)

render json nothing行生成错误

#Api :: V1 :: ArticlesController:0x000000074f6148的未定义方法`json'

改变线条render json: message: "removed", status: :ok没有区别.怎么没有渲染?

更新:我尝试了下面的代码,删除后回复No response received,而我期待的消息.

  def destroy
    if @article.destroy
      respond_to do |format|
        format.json { render nothing: true, message: "removed", status: :ok }
      end
    else
      render json: @article, message: "Failed to remove", status: :bad_request
    end
  end
Run Code Online (Sandbox Code Playgroud)

api json ruby-on-rails ruby-on-rails-4

11
推荐指数
2
解决办法
9799
查看次数

静态404页面Rails 4:如何使用资产管道?

我正在使用Rails 4.2.3并尝试自定义404错误页面public/404.html.如何包含资产管道中的图像?

如何构建动态自定义错误页面有一个很好的帖子.但是,如上所述,它需要对设置进行大量更改,作为初学者,我还没准备好.我想做的就是在我的404页面中包含2个资产管道中的图像.是否有捷径可寻?

ruby-on-rails asset-pipeline ruby-on-rails-4

6
推荐指数
1
解决办法
3046
查看次数

如何将 favicon 与资产管道一起使用?

我正在使用在线生成器(http://realfavicongenerator.net但其他生成器,例如 www.favicon-generator.org 工作相同)来实现收藏夹图标。生成器提供了近 30 个文件(用于 android、苹果、不同大小等的图像),这就是为什么我将所有这些文件放在资产管道 ( assets/images/favicons/) 而不是公共文件夹中(否则会变得如此混乱)。

文件中包含一个 xml 文件browserconfig.xml和一个 json 文件manifest.json(不确定它们的确切用途)。在标题中,我使用以下方法加载两个文件:

<%= content_tag :meta, nil, content: image_path("favicons/browserconfig.xml"), name: 'msapplication-config' %>
<%= content_tag :link, nil, href: image_path("favicons/manifest.json"), rel: :manifest %>
Run Code Online (Sandbox Code Playgroud)

image_path这种方式可以吗?(即使它们不是图像,我已将所有图标文件放在一个文件夹中assets/images/favicons

此外,xml 和 json 文件都包含对现在位于资产管道中的网站图标图像(见下文)的引用。所以在目前的形式下,这些引用失败了。如何引用 xml 和 json 文件中的图像?

浏览器配置.xml:

<?xml version="1.0" encoding="utf-8"?>
<browserconfig>
  <msapplication>
    <tile>
      <square70x70logo src="/mstile-70x70.png"/>
      <square150x150logo src="/mstile-150x150.png"/>
      <square310x310logo src="/mstile-310x310.png"/>
      <wide310x150logo src="/mstile-310x150.png"/>
      <TileColor>#fff8dc</TileColor>
    </tile>
  </msapplication>
</browserconfig>
Run Code Online (Sandbox Code Playgroud)

清单.json:

{
  "name": "AppName",
  "icons": [
    { …
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails asset-pipeline ruby-on-rails-4

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

如何在Rails集成测试中提供辅助方法?

我有一个帮助文件,app/helpers/sessions_helper.rb其中包含一个my_preference返回当前登录用户首选项的方法.我想在集成测试中访问该方法.例如,我可以get user_path(my_preference)在我的测试中使用.

在其他帖子中我读到这可能是通过包含require sessions_helper在测试文件中,但我仍然得到错误NameError: undefined local variable or method 'my_preference'.我究竟做错了什么?

require 'test_helper'
require 'sessions_helper'

class PreferencesTest < ActionDispatch::IntegrationTest

  test "my test" do
    ...
    get user_path(my_preference)
  end

end
Run Code Online (Sandbox Code Playgroud)

ruby testing ruby-on-rails ruby-on-rails-4

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

如何播种图像的路径?

OrganizationImage有一个1-to-1 relationship.Image有一个名为的列filename,它存储文件的路径.我有一个包含在资产管道中的文件:app/assets/other/image.jpg.播种时如何包含此文件的路径?

我试过我的种子文件:

@organization = ...
@organization.image.create!(filename: File.open('app/assets/other/image.jpg'))
# I also tried:
# @organization.image.create!(filename: 'app/assets/other/image.jpg')
Run Code Online (Sandbox Code Playgroud)

两者都生成错误:

NoMethodError: undefined method `create!' for nil:NilClass
Run Code Online (Sandbox Code Playgroud)

我检查了debugger并且可以确认它不是 @organization零.
如何使这项工作并将文件的路径添加到Image模型中?


更新:我尝试了以下内容:

@image = Image.create!(organization_id: @organization.id,
                       filename: 'app/assets/other/image.jpg')
Run Code Online (Sandbox Code Playgroud)

我也尝试过:

image = @organization.build_image(filename: 'app/assets/other/image.jpg')
image.save
Run Code Online (Sandbox Code Playgroud)

播种后,两次尝试都会产生错误:

CarrierWave::FormNotMultipart: You tried to assign a String or a Pathname to an uploader, for security reasons, this is not allowed.
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails asset-pipeline ruby-on-rails-4

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

为什么 Redux 存储中的这个变量不在 React 页面的 `this.props` 中?

我有一个变量,我相信该变量已使用 Redux 操作和化简器正确写入我的 Redux 存储。但由于某种原因,它永远不会成为 React 页面上 props 的一部分。根据下面的代码,可能是什么原因?我希望this.props.transactionDetails并在代码块this.state.trans_status中可用render。Redux 存储对于其他变量/页面可以正常运行。

反应页面:

import { get_details } from "../../../appRedux/actions/transAction";

class DonePage extends Component {
    constructor(props) {
        super(props);
        this.state = {
            showLoader: true,
            transactionDetails: "",
            trans_status: "",
        };
    }

    async componentDidMount() {
        await this.props.get_details('abc1234');
    }

    componentDidUpdate(prevProps, prevState) {
        if (prevProps.transactionDetails !== this.props.transactionDetails) {
            console.log("Inside ComponentDidUpdate");
            // It never arrives here, perhaps suggesting the prop is never created in the store?

            this.setState({
                trans_status: this.props.transactionDetails.trans_status,
            });
        }
    }

    render() …
Run Code Online (Sandbox Code Playgroud)

javascript reduce reactjs redux

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

如何构建一个有`#`的路由?

如何在其中构建带有hashtag(#)的路由?我创造了这条路线

get 'authors/#/:id' => 'authors#show
Run Code Online (Sandbox Code Playgroud)

但这会产生路线

GET    /authors/%23/:id(.:format)
Run Code Online (Sandbox Code Playgroud)

所以它应该在%23哪里#.

routes ruby-on-rails angularjs ruby-on-rails-4

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

默认情况下,嵌入带字幕的Youtube无法正常工作

我正在尝试嵌入YouTube电影,并且希望默认情况下启用字幕。

我知道从https://developers.google.com/youtube/player_parameters#cc_load_policy应该使用cc_load_policy=1

我使用下面的html代码,但似乎无法正常工作。也就是说,它会关闭字幕(您可以手动打开字幕,因此视频中确实有字幕)。我究竟做错了什么?

我尝试了以下两种选择:

<iframe src="https://www.youtube-nocookie.com/embed/xxxxxx?rel=0&amp;&showinfo=0&cc_load_policy=1" frameborder="0" allowfullscreen></iframe>
<iframe src="https://www.youtube-nocookie.com/embed/xxxxxx?rel=0&amp;&showinfo=0" cc_load_policy="1" frameborder="0" allowfullscreen></iframe>
Run Code Online (Sandbox Code Playgroud)

javascript embed youtube iframe youtube-iframe-api

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

如何正确摆脱 UNSAFE_componentWillMount

对于我从另一位开发人员继承的 React 应用程序,其中一个页面包括:

import { getLogUser } from "../../appRedux/actions/authAction";

constructor(props) {
    super(props);
    this.state = {
        user: null,
    };
}

UNSAFE_componentWillMount() {
    let user = getLogUser();
    this.setState({ user });
    // user state is used inside the render part
}

componentDidMount = () => {
    let { username } = getLogUser();
    // ... username is used inside some logic within the componentDidMount method.
Run Code Online (Sandbox Code Playgroud)

我想摆脱这个UNSAFE_componentWillMount方法。

  1. UNSAFE_componentWillMount如果我user: getLogUser()在内部使用,我可以移除该部件吗 constructor
  2. 如果这确实是正确的方法,那么我不应该将let { username } = getLogUser();inside 替换为 …

unsafe reactjs

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

ActiveModelSerializers gem:如何将参数传递给序列化器

我正在将 gem active_model_serializers从版本 0.9.5 更新到 0.10.1。对于 0.9.5 版本,下面的代码有效。

控制器:

def create
  ...
  render json: @dia, app_rights: app_rights(@dia)
end
Run Code Online (Sandbox Code Playgroud)

序列化器:

class Api::V1::SerializerWithSessionMetadata < ActiveModel::Serializer
  attributes :app_rights
  def app_rights
    serialization_options[:app_rights]
  end
end
Run Code Online (Sandbox Code Playgroud)

该方法serialization_options在 0.10.1 版本中已被弃用。

  • 这里建议使用instance_options
  • 这里建议使用options:“instance_options 仅在 master 分支中可用,在当前 RC 中不可用。在当前 RC 中,您必须使用 options 代替”。
  • 还有@options和的建议@instance_options

我尝试serialization_options用上述所有选项进行替换。但是,在所有情况下,更新 gem 后,生成的 json 都不包含app_rights. 我究竟做错了什么?

ruby json ruby-on-rails active-model-serializers

2
推荐指数
1
解决办法
1602
查看次数

Options_for_select无效:boolean的下拉框

我正在尝试在编辑视图中使用以下代码将布尔值包含在下拉框中:

<div class="col-md-8">
  <%= f.select :match, options_for_select([['On', true], ['Off', false]]), class: 'form-control input-md' %>
</div>
Run Code Online (Sandbox Code Playgroud)

但是我遇到了两个问题:

1.它没有显示正确的值.即使用户的价值是false,它仍然显示On.

2.它没有实现样式.检查员显示它按如下方式实现:

<div class="col-md-8">
  <select name="user[match]" id="user_match">
    <option value="true">On</option>
    <option value="false">Off</option>
  </select>
</div>
Run Code Online (Sandbox Code Playgroud)

我究竟做错了什么?

ruby ruby-on-rails ruby-on-rails-4

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