小编Joh*_*ohn的帖子

has_and_belongs_to_many给出"没有这样的表"错误

我在档案和联系之间有很多关系,因此他们有以下关系:

class Dossier < ActiveRecord::Base
  has_and_belongs_to_many :contacts
Run Code Online (Sandbox Code Playgroud)

class Contact < ActiveRecord::Base
  has_and_belongs_to_many :dossiers
Run Code Online (Sandbox Code Playgroud)

在Dossiers控制器显示方法中我有这个:

@dossier = current_user.company.dossiers.find(params[:id])    
@dossier_contacts = @dossier.contacts
Run Code Online (Sandbox Code Playgroud)

但是当我请求显示视图时,我收到错误:

SQLite3::SQLException: no such table: contacts_dossiers: SELECT COUNT(*) FROM "contacts" INNER JOIN "contacts_dossiers" ON "contacts"."id" = "contacts_dossiers"."contact_id" WHERE "contacts_dossiers"."dossier_id" = 1
Run Code Online (Sandbox Code Playgroud)

该视图如下所示:

<li><%= I18n.t :dossier_nr_contacts %></li><li><%= @dossier_contacts.count.to_s %></li>
Run Code Online (Sandbox Code Playgroud)

我认为我已经设置了正确的关系,表存在,但我现在不知道为什么它会给出错误.有线索吗?

编辑:我做的迁移:

class CreateDossiersContactsJoinTable < ActiveRecord::Migration
  def up
    create_table :dossiers_contacts, :id => false do |t|
      t.integer :dossier_id
      t.integer :contact_id
    end
  end

  def self.down
    drop_table :dossiers_contacts
  end
end
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails ruby-on-rails-3.1

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

options_for_select选中的值不起作用

我有一个projectuser数据的表单,但是当我编辑projectuser时,所选的projectuser保持为空,出了什么问题?这是代码:

= f.select :user_id, options_for_select(@users.map{ |u| [u.full_name, u.id] }, selected: @projectuser.full_name), include_blank: true
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

Wicked_pdf样式表不适用于Heroku

我有一个Rails应用程序,我使用wicked_pdf生成PDF.这一切都很好并在本地工作,但是当推送到heroku时,PDF会渲染,但不应用样式表.

特别是对于PDF渲染,我有一个CSS文件:app/assets/stylesheets/pdf.css.scss.在form.pdf.haml我加载这样的样式表:

  !!!
  %html{lang: "en", "xml:lang" => "en", xmlns: "http://www.w3.org/1999/xhtml"}
    %head
      %meta{content: "text/html; charset=UTF-8", "http-equiv" => "Content-Type"}/
      = wicked_pdf_stylesheet_link_tag "pdf"
Run Code Online (Sandbox Code Playgroud)

如上所述,它在本地工作得很好,但是当推送到heroku时,我收到这个错误:

ActionView::Template::Error (No such file or directory - /app/public/pdf.css)
Run Code Online (Sandbox Code Playgroud)

我需要做什么才能在heroku上完成这项工作?

编辑:我发现了这个Gihub repo https://github.com/jordan-brough/heroku-pdf,这是一个在heroku上使用wicked_pdf的示例应用程序.通过在请求PDF时调整environment.rb文件public夹中的css文件来帮助它真的很有帮助.

css pdf ruby-on-rails heroku wicked-pdf

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

标头未随 ajax 请求发送

在我的 React.js 应用程序中,我使用 jquery.ajax方法从后端 API 检索信息。为此,我需要添加一个授权令牌作为标头,并添加了以下headers选项:

$.ajax({
  url: this.props.source,
  headers: { 'Accept':'application/json', 'Authorization':'Token 36d417' },
  dataType: 'jsonp',
  success: function(data) {
    this.setState({data: data});
  }.bind(this),
  error: function(xhr, status, err) {
    console.error(this.props.url, status, err.toString());
  }.bind(this)
});
Run Code Online (Sandbox Code Playgroud)

但是我收到了401 Unauthorized服务器的响应。当我检查标题时,它们似乎没有被添加?

Remote Address:189.28.154.73:8080
Request URL:https://todos-api.com/api/v1/todos?callback=jQuery1100005772984796203673_1424179650018&_=1424179650019
Request Method:GET
Status Code:401 Unauthorized
Request Headersview source
Accept:*/*
Accept-Encoding:gzip, deflate, sdch
Accept-Language:en-GB,en-US;q=0.8,en;q=0.6,nl;q=0.4
Cache-Control:no-cache
Connection:keep-alive
Host:todos-api.com
Pragma:no-cache
Referer:https://todos-reactjs.io/
User-Agent:Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/40.0.2214.111 Safari/537.36
Run Code Online (Sandbox Code Playgroud)

ajax jquery

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

在1个视图中显示2个模型的数据

我有2个模型:AvailableDates - > belongs_to:spec和Spec - > has_many:available_dates现在我有一个视图,我想要显示来自Spec和AvailableDates的数据,并且具有相同的friend_id属性.我可以用SQL做到这一点,它工作正常:

@invitees = AvailableDate.find_by_sql "SELECT d.friend_id, s.first_name, s.last_name, s.gender, s.birthdate, s.occupation, s.country, s.city FROM available_dates d, specs s WHERE d.friend_id = s.friend_id AND d.city = 'London'
Run Code Online (Sandbox Code Playgroud)

视图将如下所示,包含两个模型的数据:

    <% @invitees.each do |invitee| %>
      <tr>
        <td><%=h invitee.first_name %></td>
        <td><%=h invitee.last_name %></td>
        <td><%=h invitee.gender %></td>
        <td><%=h invitee.birthdate %></td>
      </tr>
    <% end %>
Run Code Online (Sandbox Code Playgroud)

但是,这并不觉得"像铁轨一样",所以我想这样做,同时保持视图中的代码不变:

@invitees = AvailableDate.find(:all, :conditions => ["country = ? and city = ? and start_date <= ? and end_date >= ?", country, city, date, date]) …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails

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

获得嵌套参数

我有一个嵌套params的表单.在以下示例中,如何获取控制器中的"amount_whole"值?

    Parameters: {"utf8"=>"?", "authenticity_token"=>"KCmBI6RLh0LdUsM2r5H1vhNykS1IXecFe5Lct+TuIGc=", "dec_declaration"=>{"declaration_nr"=>"SAL_2012_0001", "dec_declarationlines_attributes"=>{"0"=>{"amount_whole"=>"75"}}
Run Code Online (Sandbox Code Playgroud)

是这样的吗?

amount = params[:dec_declarations][:dec_declarationlines_attributes][:amount_whole]
Run Code Online (Sandbox Code Playgroud)

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

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

has_many和belongs_to在同一个模型中

我有一个模型用户,它具有"角色"属性,可以用"员工"或"经理"填充.现在我想要一个经理拥有员工和员工属于经理的关系.

是否可以在同一模型中执行此操作?我能想到这样的事情:

has_many :employees, class_name: "User", :foreign_key => "employee_id"
belongs_to :manager, class_name: "User", :foreign_key => "manager_id"
Run Code Online (Sandbox Code Playgroud)

即使这样可行,我也怀疑它是最优雅的解决方案,因为你会有2个额外的外键.

ruby-on-rails-3

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

如何破解自己的Rails网站?

我开发了一个Rails站点,我公司将其用于所有员工的内部使用.它已准备好上线,但我想确保它足够安全,以面对外部世界的大而糟糕.所以我想尝试破解它来测试网站的安全性.这有什么好的起点?你知道有什么好的教程或技巧吗?

security ruby-on-rails

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

权限被Vagrant拒绝

当我vagrant ssh在Windows 10笔记本电脑上的项目中进行操作时,出现此错误:

vagrant@127.0.0.1: Permission denied (publickey)

然后.vagrant/machines/default/virtualbox/private_key,当我删除并vagrant ssh再次执行操作时,便可以访问虚拟机。

但是当我退出虚拟机并执行“ vagrant halt”时,出现此错误:

==> default: Attempting graceful shutdown of VM... default: default: Vagrant insecure key detected. Vagrant will automatically replace default: this with a newly generated keypair for better security. default: default: Inserting generated public key within guest... translation missing: en.vagrant_ps.errors.powershell_error.powershell_error

在我看来,它试图添加我的SSH密钥,但是出了点问题。知道我该如何解决吗?

ssh vagrant

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

工作流文件错误,未提供密码

我已经设置了一个 Github Action 来运行我的 Rails 应用程序的测试,但我一直收到这个错误:

Run bundle exec rails db:prepare
rails aborted!
PG::ConnectionBad: fe_sendauth: no password supplied
Run Code Online (Sandbox Code Playgroud)

这是工作流 yml 文件:

name: CI
on: [push]
jobs:
  test:
    runs-on: ubuntu-latest
    services:
      db:
        image: postgres:11
        env:
          POSTGRES_USER: postgres
          POSTGRES_DB: bb_test
          POSTGRES_PASSWORD: postgres
        ports: ['5432:5432']
      redis:
        image: redis
        ports: ['6379:6379']
        options: --entrypoint redis-server

    steps:
      - name: Checkout code
        uses: actions/checkout@v2
      - name: Install missing libs
        run: sudo apt-get -yqq install libpq-dev
      - name: Setup Ruby
        uses: actions/setup-ruby@v1
        with:
          ruby-version: 2.6.x
      - name: Install …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails github github-actions

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