Tag: actioncontroller

如何使用Rails Action Controller嵌套参数来允许特定属性哈希

关于嵌套参数有很多问题,但我似乎无法找到解决我特定的简单情况的问题。 我正在尝试允许不是数组的嵌套哈希。 我希望这可行: params.require(:book).permit(:title, :description, style: {:font, :color}) 但它导致语法错误。 然而,这有效: params.require(:book).permit(:title, :description, style: [:font, :color]) 但我的问题是,它似乎允许style值是具有属性的项目数组:font和:color。 我只想允许具有这2个属性的单个哈希。 我尝试了其他变体,但我不断收到语法错误。 我很感激任何帮助。 上下文:Rails 4.1.7,Ruby 2.0.0(这是我的待办事项列表升级!),而不是使用ActiveRecord。

使用RSpec 3和Rails 4在控制器测试中查找新创建的记录

我在Rails 4中做了一个控制器规范,我想测试由控制器动作创建的记录的属性。 如何找到新创建的记录? 例如,我可以做什么而不是 it ‘Marks a new user as pending’ do post :create, params # I don’t want to use the following line user = User.last expect(user).to be_pending end Rails指南仅简要讨论了控制器测试,其中提到测试Article.count变化为1,而不是如何获得新的ActiveRecord模型。 在Rails 3中找到最新记录的问题是关于Rails 3。 我不愿意使用User.last ,因为默认排序可能是创建日期之外的其他内容。

如何从控制器中包含的模块渲染js模板?

我在控制器问题中有一个动作,它包含在一个控制器中。 此操作不会呈现在respond_to块下指定的js.erb文件。 如何在控制器关注中正确获取操作以成功呈现js.erb文件(或任何视图)? 我的路线有问题吗? 模块操作的链接 = link_to image_tag(“upvote.png”), send(“vote_socionics_#{votable_name}_path”, votable, vote_type: “#{s.type_two_im_raw}”), id: “vote-#{s.type_two_im_raw}”, method: :post, remote: true **控制器动作的链接** = link_to “whatever”, characters_whatever_path, remote: true 控制器/ characters_controller.rb class CharactersController < ApplicationController include SocionicsVotesConcern def an_action respond_to do |format| format.js { render 'shared/vote_socionics' } # This renders/executes the file end end 控制器/关切/ socionics_votes_concern.rb module SocionicsVotesConcern extend […]

Ruby On Rails的事务操作

我在控制器内部有一个复杂的动作,它对数据库执行几个更新查询。 如何在不进行任何结构重构的情况下使此操作像事务一样 ?

Rails 3:获取当前命名空间?

使用方法:layout_for_namespace我根据我是在前端还是后端设置我的应用程序的布局,因为后端使用命名空间“admin”。 我找不到一个很好的方法来找出我是哪个命名空间,我发现的唯一方法是从params [:controller]解析字符串。 当然这很容易,似乎是安全的,并且运行良好。 但我只是想知道是否有更好的,准备好的方法来做到这一点。 有人知道吗? 目前我只是使用以下方法: def is_backend_namespace? params[:controller].index(“admin/”) == 0 end 提前致谢 阿恩

Ruby on Rails 301重定向

我添加了slugs到一些模型,但由于SEO我需要从旧链接做301重定向:旧: http://host.com/foo/1 新: http://host.com/foo/foo_slug 问题:在这种情况下如何实现301重定向? 是否可以从大写链接实现301重定向? 像这样: http://host.com/foo/FOO_SLUG -> http://host.com/foo/foo_slug

如何为Rails ActionMailer配置主机名?

我正在处理一个相当传统的忘记密码电子邮件 – 我想通过电子邮件向用户发送一个密码更改令牌,该密码更改令牌嵌入在他们可以点击以更改密码的链接中。 我通过传统的ActionMailer发送电子邮件。 如果我使用普通的link_to标签 foo, :action => ‘bar’, :token => token %> 我得到一个相对链接 – 相当无用的电子邮件。 如果我加入 :only_path => false ,然后错误说我需要设置default_url_options[:host] 。 ActionController文档暗示您通过覆盖控制器中的#default_url_options方法来实现这一点。 当然有一个配置选项告诉Rails它的主机名是什么,而不添加我自己的配置文件,解析它等?

Rails“行动”扼杀了关键冲突

我正在构建一个包含各种CRUD端点的RESTful Rails服务。 在其中一个Create端点上,我传入的数据包括: … action: “action_name” … 我遇到的问题是params[:action]包含“create”,而不是我传入的action参数的实际值。我认为这是因为params[:action]会被Rails自动填充。 有没有其他方法来访问我传递的这个键? 我做了一些明显愚蠢的事吗?

在Valuations#new中的ActionController :: UrlGenerationError

我读过与UrlGenerationError有关的其他SO文章, UrlGenerationError文章似乎指向一个单词的单一化或多元化,但我认为这不是问题所在。 当我从valuations / _form.html.erb中删除时,它可以正常工作: 使用:name & :tag_list提交:tag_list ,readd 然后刷新。 什么是零交易? 路线 resources :valuations do resources :comments end comments_controller class CommentsController < ApplicationController before_action :load_commentable before_action :set_comment, only: [:show, :edit, :update, :destroy] before_action :logged_in_user, only: [:create, :destroy] def index @comments = @commentable.comments end def new @comment = @commentable.comments.new end def create @comment = @commentable.comments.new(comment_params) if […]

如何使用GRAPE API允许二进制文件下载

我想允许使用ruby的Grape API下载二进制文件(.p12文件)。 这就是我想要的。 get ‘/download_file’ do pkcs12 = generate_pkcsfile content_type(‘application/octet-stream’) body(pkcs12.der) end 使用ActionController的等效代码是 begin pkcs12 = generate_pkcsfile send_data(pkcs12.der, :filename => ‘filename.p12′) end 问题是使用API​​下载的文件似乎是为每个字符嵌入了’\ ufffd’前缀的文本文件,而使用浏览器下载的文件似乎是二进制文件。 如何使用GRAPE API框架允许下载通过ActionController的send_data下载的同一文件