标签: controllers

Ruby on Rails中的控制器是否存在任何部分内容

我有一个控制器有超过1000行代码.

对了,我没有为这个控制器做代码审查.我根据模块安排我的方法.现在我意识到我的控制器不易维护,所以我想要跟随它

class UsersController < ApplicationController  
  #Code to require files here 
  #before filter code will goes here 

  #############Here i want to call that partial like things. following is just pseudo #########
    history module
    account module
    calendar module
    shipment module
    payment module
 ####################################################################

end #end of class
Run Code Online (Sandbox Code Playgroud)

这有助于我维护代码,因为当我更改历史模块时,我确信我的帐户模块未更改.我知道CVS但我更喜欢每个模块的50个副本而不是200个我的users_controller.rb本身.

PS: - 我想肯定答案.请不要回答,你应该为不同的模块使用不同的控制器...... bla ... bla ... bla ...因为我不可能这样做.

编辑: - 我的版本是

rails -v
  Rails 2.3.4
ruby -v
  ruby 1.8.6 (2008-08-11 patchlevel 287) [i386-linux]
Run Code Online (Sandbox Code Playgroud)

ruby ruby-on-rails controllers partial

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

Rspec控制器传递参数

以下是我遇到的问题.我不知道如何将正确的参数传递给此控制器操作.

代码

def get_standards
   @standard_children, @temp = Standard.browse(params[:guid])
   @parent_standard = params[:guid]
   respond_to do |format|
     format.js
   end
end 
Run Code Online (Sandbox Code Playgroud)

Rspec

describe "Get Standards" do
 it "should return correct values" do
   @stateOne = mock_model(Standard, description: "beta")
   Standard.stub!(:browse).and_return(@stateOne, "temp")     
   assigns(:standard_children).should == @stateOne
   assigns(:parent_standard).should == 'one'
   get :get_standards, :params => {guid: 'one'}
 end
end         
Run Code Online (Sandbox Code Playgroud)

错误

 Failure/Error: assigns(:standard_children).should == @stateOne
 expected: #<Standard:0x3ffed4e53d88 @name="Standard_1001">
 got: nil (using ==)
Run Code Online (Sandbox Code Playgroud)

rspec controllers ruby-on-rails-3

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

测试控制器,无需通过路由

我试图孤立地测试我的控制器的动作链.具体来说,我想确保我所需的行为适用于我所有控制器的操作.例如,测试我的所有操作都需要身份验证:

context "when not authenticated" do

  # single case
  describe "GET index" do
    it "responds with 401" do
      get :index
      response.code.should be(401)
    end
  end

  # all of them...
  described_class.action_methods.each do |action|
    ['get', 'put', 'post', 'delete', 'patch'].each do |verb|
      describe "#{verb.upcase} #{action}" do
        it "responds with 401" do
          send verb, action
          response.code.should == "401"
        end
      end
    end   
  end

end
Run Code Online (Sandbox Code Playgroud)

我希望这可行,但事实并非如此.我得到一些ActionController::RoutingErrors.这是因为我的一些路线需要参数,在某些情况下我不提供它们(就像我打电话时post :create).我明白了.但我不明白的是:为什么要重要!?

对于这些测试,路由是一个单独的问题.我关心我的行动链,而不是我的要求(这就是我拥有的routing specs和我request specs的).我不应该关心自己在这个级别的路线限制.

所以我的问题是:有没有办法在不模拟请求的情况下测试动作链?

编辑:一些研究

看起来在TestCase#进程中正在运行路由.这有必要吗?

testing rspec ruby-on-rails controllers

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

语法错误,意外')',期待keyword_then或';' 或'\n'

这个错误涉及什么?我无法弄清楚代码在哪里不正确?

用户Index.html.erb

<%= @events.all.each do |event| %>
  <%= if current_user.activities.include?(event.activity) %>
    <%= event.activity %>
    <%= event.description %>
    <%= event.start_time %>
    <%= event.end_time %>
    <%= event.num_attendees_requested %>
    <%= event.location_name %>
    <%= event.street_address %>
    <%= event.city %>
    <%= event.state %>
  <% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

用户控制器

class UsersController < ApplicationController
  def index
    @users = User.all
    @activities = Activity.all
    @events = Event.all
  end

  def show
    @user = current_user
    @events = Event.all
    @activities = Activity.all
  end
Run Code Online (Sandbox Code Playgroud)

views ruby-on-rails controllers

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

交易在 Laravel 中不起作用

我在 Laravel 中遇到交易问题。当我尝试使用以下代码执行此操作时,错误出现在屏幕上,就好像我没有交易一样。

\DB::transaction(function() use ($movement, $movementRows) {
   $movement->save();
   $movement->rows()->saveMany($movementRows);
});
Run Code Online (Sandbox Code Playgroud)

当我尝试使用下面的代码执行此操作时,尽管第二个对象失败,但会保存第一个对象。

\DB::beginTransaction();
try {
     $movement->save();
     $movement->rows()->saveMany($movementRows);
      \DB::commit();
      $success = true;
} catch (\Exception $e) {
    $success = false;
    \DB::rollback();
}

if ($success) {
    // the transaction worked ...
}
Run Code Online (Sandbox Code Playgroud)

php database transactions controllers laravel

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

我如何测试grail的控制器的渲染方法?

我该如何测试:

render view: "create", model: [user: user]
Run Code Online (Sandbox Code Playgroud)

我知道如何测试redirectArgs和东西,但我找不到一个例子来测试这样的东西.似乎文章和东西不顾一切地测试这个....

testing grails render controllers

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

Rails登陆页面

我决定在我的网站goldhat.org上放置一个登陆页面.我希望用户能够直接访问此页面,如果他们已登录并且未登录则会定向到目标网页.目标网页目前位于此处.如果点击顶部的"浏览网站"链接,它将转到当前的主页.

基本上我想要登陆页面和当前主页共享"www.goldhat.org"网址.我可以看到这对于登录来说这很容易吗?有条件的,但是那些没有登录并浏览网站的人呢.我只想让登陆页面显示一次.

有任何想法吗?

routing ruby-on-rails controllers

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

RSpec脚手架控制器,了解给出的默认值

我正在通过一个rspec教程(peepcode教程).我生成了一些脚手架,我希望有人可以帮助解释如何重新编写描述以便为新手阅读更清楚一些.

describe "POST create" do

    describe "with valid params" do
      it "assigns a newly created weather as @weather" do
        Weather.stub(:new).with({'these' => 'params'}) { mock_weather(:save => true) }
        post :create, :weather => {'these' => 'params'}
        assigns(:weather).should be(mock_weather)
      end

end
Run Code Online (Sandbox Code Playgroud)

这行代码是我试图理解的这一行

Weather.stub(:new).with({'these' => 'params'}) { mock_weather(:save => true) }
Run Code Online (Sandbox Code Playgroud)

我从未见过将方法放在括号内.这究竟意味着什么?

{ mock_weather(:save => true) }
Run Code Online (Sandbox Code Playgroud)

rspec controllers scaffold

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

尽管视图渲染得很好,但控制器方法永远不会执行

我的Rails路由有一个奇怪的问题.我有一个名为Page的控制器和一个名为Page#dashboard的方法

当我尝试访问/ dashboard/1时,页面控制器的仪表板方法永远不会被执行.但令人惊讶的是/pages/dashboard.html.erb呈现得很好.

有人能解释一下为什么吗?

代码详情如下.谢谢

试图访问 - /dashboard/1

的routes.rb

match '/dashboard/:id' => 'page#dashboard'
Run Code Online (Sandbox Code Playgroud)

Page_Controller.rb

class PageController < ApplicationController

  before_filter :init

  private

  def init

    puts "init getting executed !!!!!!!!!"  #this gets printed on console

  end

  def dashboard

     puts "dashboard getting executed !!!!!!!!!" #this doesnt get printed on console


  end

end
Run Code Online (Sandbox Code Playgroud)

viewPage - Pages/dashboard.html.erb

日志如下所示 -

init getting executed !!!!!!!!!
Started GET "/dashboard/8" for 127.0.0.1 at 2012-06-03 00:04:40 +0800
Processing by PageController#dashboard as HTML
  Parameters: {"id"=>"8"}
  Rendered page/dashboard.html.erb within layouts/page (45.9ms)
Completed …
Run Code Online (Sandbox Code Playgroud)

routing ruby-on-rails controllers ruby-on-rails-3

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

Rails:单页网站,如何组织控制器/视图等

我有一个单页网站使用ruby on rails作为框架.在单页上我有一个

第1节

第2节

第3节等

页脚

我遇到的问题是这样,我如何组织布局/视图/控制器.只有一个部分我有一个需要处理的表单,并链接到数据库表(模型).谁能告诉我如何组织我的ROR申请?

ruby frameworks ruby-on-rails controllers

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