标签: actioncontroller

在"漂亮的网址"中找到点

在我的routes.rb我有:

map.connect ':name',
            :controller => 'my_classes',
            :action => 'show'
Run Code Online (Sandbox Code Playgroud)

这完全有效,所以像这样的网址会发送这样的参数:

http://localhost:30000/awesome
Parameters: {"name"=>"awesome"}
Run Code Online (Sandbox Code Playgroud)

但如果我有这样的东西我得到这个错误:

http://localhost:30000/weak.sauce
ActionController::RoutingError (No route matches "/weak.sauce" with {:method=>:get}):
Run Code Online (Sandbox Code Playgroud)

我怎么能绕过这个?

routes ruby-on-rails actioncontroller

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

如何在保存在rails上的ruby之前验证表中的记录

我是Ruby on Rails的新手我有一个场景,其中我有一个包含一些字段的表单.我需要对具有数据的表进行验证的字段值之一.我想限制用户保存任何数据,除非使用表记录验证该字段.

最初我在控制器中添加了代码以验证它,但我有其他字段需要验证为空,所以它不起作用.

此外,我希望验证错误成为其他错误的一部分.

我在模型文件中尝试了以下代码

before_create :validate_company_id

def validate_company_id
    cp = Company.find_by_company_id(self.company)
    if @cp != nil
       return
     else
        self.status ||= "Invalid"    
     end
end
Run Code Online (Sandbox Code Playgroud)

但它没有验证,你能帮助我如何验证它.

关于Surjan

model ruby-on-rails actioncontroller

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

未初始化的常数 - 控制器内的模型

我有一个俱乐部有多个位置的应用程序.俱乐部及其位置只能在管理员命名空间内编辑.

我正在尝试将俱乐部预加载到控制器中,以便所有操作仅处理该俱乐部.

路线是嵌套的; 但是,在位置控制器中,它找不到Club模型.我究竟做错了什么?

的routes.rb

namespace :admin do
  resources :clubs do
    resources :locations
  end
end
Run Code Online (Sandbox Code Playgroud)

club.rb

class Club < ActiveRecord::Base
  belongs_to :membership
  has_many :users
  has_many :locations
  #accepts_nested_attributes_for :locations
end
Run Code Online (Sandbox Code Playgroud)

管理员/ locations_controller.rb

class Admin::LocationsController < ApplicationController
  before_filter :load_club

  protected 

  def load_club
    @club = Club.find(params[:club_id])
  end
end
Run Code Online (Sandbox Code Playgroud)

另外,最后:我的路线有什么问题,它没有在管理员/俱乐部/位置寻找位置控制器?我不确定这是否是问题的一部分.

来自耙路线

    admin_club_locations POST   /admin/clubs/:club_id/locations(.:format)          admin/locations#create
 new_admin_club_location GET    /admin/clubs/:club_id/locations/new(.:format)      admin/locations#new
edit_admin_club_location GET    /admin/clubs/:club_id/locations/:id/edit(.:format) admin/locations#edit
     admin_club_location PUT    /admin/clubs/:club_id/locations/:id(.:format)      admin/locations#update
                         DELETE /admin/clubs/:club_id/locations/:id(.:format)      admin/locations#destroy
Run Code Online (Sandbox Code Playgroud)

routes ruby-on-rails actioncontroller

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

如何从控制器外部访问Rails控制器视图上下文?

我正在通过创建一个"普通的旧Ruby"presenter对象来清理一些依赖于某些自定义控制器辅助方法的代码.在我的控制器中,我能够将视图上下文传递给类:

def show
  # old code: view_context.bad_helper_method
  @foobar = FoobarPresenter.new(Foobar.find(params[:id]), view_context)
end

class FoobarPresenter
  def initialize(model, view_context)
    @model = model
    @view_context = view_context
  end

  def something
    @view_context.bad_helper_method
  end
end
Run Code Online (Sandbox Code Playgroud)

但是,我不确定在我的测试中应该通过什么.我宁愿动态地拉动helper/view_context,这样我就不必将其传入.

如何访问控制器外部的视图/控制器助手上下文?

这是一个Rails 3.2项目.

ruby-on-rails actionview actioncontroller actionviewhelper

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

避免在视图中重复"content_for"

我的布局中有一个子菜单,它与控制器不同,但不是每个控制器方法视图之间.我目前正在做的是以下内容:

<% content_for( :submenu ) do %>
    <%= render :partial => 'submenus/correct_submenu' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

在方法的每个视图中

我的应用程序布局就是这个

<%= yield :submenu %>
Run Code Online (Sandbox Code Playgroud)

然而,这对于每个视图都是重复的.有没有办法在每个控制器上执行此操作?

ruby-on-rails actionview actioncontroller

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

如何检查属性是否在 Rails 的更新操作中发生变化?

我正在尝试检查 - 如果某些(语言)属性已更改,并且它等于某个值,我需要将其更改为其他适当的值。

这是我的代码:

编辑

    def update
@website = Website.find(params[:id])
@website.language = params[:website][:language]
if @website.language_changed?
  if params[:website][:language] == "Automatic (by user's browser language)"
    @website.language = full_language(request.env['HTTP_ACCEPT_LANGUAGE'].scan(/^[a-z]{2}/).first)
  end
end
respond_to do |format|
 if @website.save
   format.html { redirect_to @website, 
  notice: 'Note: code has been updated. Please replace the code you have on your website with the code below. Only then changes will take effect.' }
   end
  end
end
Run Code Online (Sandbox Code Playgroud)

我的表格:

  <%= f.label "Website category"%>
  <%= f.select :category, options_for_select([
      "--- please select ---", …
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actioncontroller

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

html或json的相同控制器操作中的不同代码

我有一个控制器动作,以两种格式响应相同的根--html和json.但是为html响应运行的代码与json响应的代码完全不同.现在我有类似的东西

def index
  result_html = ...
  result_json = ...
  respond_to |format|
     format.html
     format.json { result = result_json.limit(10) }
  end
end
Run Code Online (Sandbox Code Playgroud)

而且我想拥有它

 def index.html
    result_html ...
 end
Run Code Online (Sandbox Code Playgroud)

def index.json
  result_json ...
end
Run Code Online (Sandbox Code Playgroud)

组织它的最佳方式是什么?

ruby-on-rails actioncontroller

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

为什么渲染和重定向不会在Rails应用程序中停止执行?

我有一个用例问题.在Rails 4.1中,如果您运行一个控制器方法并且在方法中的某个点上具有redirect_to或render,那么您仍然可以在该点继续执行.如果您没有正确处理控制流,有时会导致AbstractController :: DoubleRenderError.为什么在Rails中允许这样做?这似乎是一个有趣的用例重定向而不是停止执行,何时这是合适的?

完整的错误消息如下所示:

  AbstractController::DoubleRenderError:
       Render and/or redirect were called multiple times in this action. Please note that you may only call render OR redirect, and at most once per action. Also note that neither redirect nor render terminate execution of the action, so if you want to exit an action after redirecting, you need to do something like "redirect_to(...) and return".
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails actioncontroller ruby-on-rails-3 ruby-on-rails-4

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

使用rails 5合并ActionController :: Parameters

在rails 4中,我可以合并!StrongParams,但因为rails 5(beta1)合并!不可用.这是在控制器中执行此操作的最佳方法

  params = ActionController::Parameters.new({
             name: 'Francesco',
             age:  22,
             role: 'admin'
         })
         params.merge!(city: "Los Angeles")
Run Code Online (Sandbox Code Playgroud)

ruby-on-rails actioncontroller strong-parameters ruby-on-rails-5

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

Ruby on Rails - 何时使用params.permit!以及如何更换它

我正在研究传统的rails应用程序,控制器有许多实例params.permit!.在其上运行Brakeman扫描时,params.permit!打开应用程序以进行质量分配漏洞.

我的问题是 - 解决这个问题的最有效方法是什么.允许!漏洞并取而代之?

ruby security ruby-on-rails actioncontroller brakeman

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