小编Har*_*and的帖子

如何将操作路由到Rails 3中的应用程序控制器?

我正在使用gem rails3-jquery-autocomplete并且没有任何问题,但是我现在已经将自动完成表单移动到应用程序模板中,因此ajax调用现在由应用程序控制器处理,因此我的路由已从以下更改:

home/autocomplete_category_name
Run Code Online (Sandbox Code Playgroud)

现在需要删除主页并从以下路径:

home_autocomplete_category_name_path
Run Code Online (Sandbox Code Playgroud)

至:

autocomplete_category_name_path
Run Code Online (Sandbox Code Playgroud)

有人有任何想法吗?还在学习Rails的来龙去脉,所以现在这对我来说是个死胡同.

谢谢.

routes ruby-on-rails applicationcontroller ruby-on-rails-3

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

Rails 3路由并使用GET创建干净的URL?

我对Rails 3中的路线感到有点困惑,因为我刚开始学习这门语言.我在这里生成了一个表单:

  <%= form_tag towns_path, :method => "get" do %>
    <%= label_tag :name, "Search for:" %>
    <%= text_field_tag :name, params[:name] %>
    <%= submit_tag "Search" %>
  <% end %>
Run Code Online (Sandbox Code Playgroud)

然后在我的路线:

  get "towns/autocomplete_town_name"
  get "home/autocomplete_town_name"

  match 'towns' => 'towns#index'
  match 'towns/:name' => 'towns#index'

  resources :towns, :module => "town"
  resources :businesses, :module => "business"

  root :to => "home#index"
Run Code Online (Sandbox Code Playgroud)

那么为什么在提交表单时我会得到以下网址:

/城镇?= UTF8&✓名称= townname&提交=搜索

所以问题是我如何将这个网址变成一个干净的网址:

/镇/ townname

谢谢,

安德鲁

routes get ruby-on-rails ruby-on-rails-3

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

Ruby on Rails,Devise gem.密码为空时如何删除当前密码?

现在我意识到这个话题已经被覆盖过很多次了.但是,似乎没有一种解决方案只有在数据库中的密码为空时才能使当前密码字段免除.

我目前在我的用户模型中需要密码,如:

def password_required?
  (authentications.empty? || !password.blank?) && super
end
Run Code Online (Sandbox Code Playgroud)

然后我将更新功能复制到我的注册控制器中:

def update
  if resource.update_with_password(params[resource_name])
    set_flash_message :notice, :updated
    sign_in resource_name, resource, :bypass => true
    redirect_to after_update_path_for(resource)
  else
    clean_up_passwords(resource)
    render_with_scope :edit
  end
end
Run Code Online (Sandbox Code Playgroud)

我只是不知道在编辑空白密码时如何确保设计不需要密码,我是否还需要从视图中删除current_password字段并执行此操作?

<% if current_user.password_required? %>
  <p><%= f.label :current_password %> <i>(we need your current password to confirm your changes)</i><br />
  <%= f.password_field :current_password %></p>
<% end %>
<p><%= f.submit "Update" %></p>
Run Code Online (Sandbox Code Playgroud)

任何建议都会很棒,因为我确信我忽视了一些东西,但我仍然是Rails的新手.谢谢!

passwords ruby-on-rails devise ruby-on-rails-3

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

Twitter Bootstrap - 将输入与控制组内的标签垂直对齐

<div class="control-group">
    <label class="control-label ">Date of purchase as detailed on your receipt</label>
    <div class="controls">
        <div class="input-append">
            <select name="invoice_date" value="2013-06-28" required="required">
                <option value="">Please Select</option>
            </select>
            <button type="button" class="btn info btn-primary" data-help="invoice_date">i</button>
        </div>
    </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我尝试了一些解决方案和一种使用绝对位置的方法,但这会影响其他引导区域,特别是当它响应时.

http://jsfiddle.net/tGZLd/

我正在尝试将输入与标签的中心对齐,该标签已经被推到多行但是在最好的bootstrap实践中.

或者我应该放弃并强制它显示带有下方输入的全宽标签?

任何见解都会很棒,谢谢!

css forms twitter-bootstrap

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

Composer,Laravel和本地包

我的问题是我有一个不是存储库的软件包,我试图让它与Laravel和作曲家玩得很好.它仍然位于供应商文件夹下,唯一的问题是,如果我只是设置:

"psr-0": {
        "Test\\Test": "vendor/test/test/src/"
    }
Run Code Online (Sandbox Code Playgroud)

这将加载服务提供商,但没有控制器等将自动加载.使用没有自己的存储库的larval实现包的正确方法是什么.或者这是否违背了包的性质,这应该只是在应用程序控制器下构建.

该软件包是由我使用workbench创建的,但我发现我并不真的需要将它作为一个单独的存储库,但将它作为一个软件包仍然是好的.因此,结构与常规包完全相同:

vendor
    testvendor
        testpackage
            public
            src
            tests
            .gitignore
            composer.json
            phpunit.xml
Run Code Online (Sandbox Code Playgroud)

更新:

作为我目前正在使用的解决方案:

"autoload": {
    "classmap": [
        "app/commands",
        "app/controllers",
        "app/models",
        "app/database/migrations",
        "app/database/seeds",
        "app/tests/TestCase.php",
        "vendor/package"
    ]
},
Run Code Online (Sandbox Code Playgroud)

作为班级地图中的条目.期待我可能会将其重构到app文件夹中或为此包创建一个存储库.

php autoload laravel composer-php laravel-4

6
推荐指数
2
解决办法
5781
查看次数

Ruby on Rails设计,如何在身份验证失败时更改登录路径?

我最近在我的新应用程序中与Omniauth一起实现了Devise,但我不确定如何更改Devise中的默认登录路径,以便在我调用时:

user_authenticated!
Run Code Online (Sandbox Code Playgroud)

它将重定向到身份验证控制器页面.
任何想法如何做到这一点?

编辑:为了更好地解释我的问题 - >

我想要的是当用户尝试访问要求您登录的页面,然后在过滤之前由user_authenticated发送给users/sign_in,但是我希望它们/auth通过user_authenticated!not users/sign_in 重定向到.

authentication routes ruby-on-rails devise

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

使用"news_path"作为:news资源不能与`No route matches {:action =>"show",:controller =>"admin/news"}缺少必需的键:[:id]'

我正在实现一个管理子域名,并已谷歌搜索尝试找到这个答案,但我没有找到另一个实例.

对于子域部分,我的路由如下所示:

constraints :subdomain => 'admin' do
  scope :module => "admin" do

    resources :news, :events
    match 'news', :to => 'news#index', :as => 'news'

    root :to => "dashboard#index"
  end
end
Run Code Online (Sandbox Code Playgroud)

事件工作正常,但出于某种原因,为了使新闻工作,我需要添加一个特定的路线来匹配它.显示生成错误的部分位置(admin/shared/menu)可能会有所帮助:

<ul>
    <li><%= link_to 'Home', root_path, :class => "#{current_class?(root_path)}" %></li>
    <li><%= link_to 'News', news_path, :class => "#{current_class?(news_path)}" %></li>
    <li><%= link_to 'Events', events_path, :class => "#{current_class?(events_path)}" %></li>
    <div class="clearboth"></div>
</ul>
Run Code Online (Sandbox Code Playgroud)

然后错误,如果我要删除匹配路线:

No route matches {:action=>"show", :controller=>"admin/news"} missing required keys: [:id]
Run Code Online (Sandbox Code Playgroud)

我只是不知道为什么,有什么想法?

routes ruby-on-rails

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

正确查找语法:首先,:Rails 3中的顺序?

我目前正在使用以下内容来检索城镇名称:

place = Town.find(:first, :conditions => ["name = ?", params[:place_post]])
place ||= Town.find(:first, :order => "damlev(`towns`.`name`, '" + params[:place_post] + "')")
Run Code Online (Sandbox Code Playgroud)

什么是最好的方法,命名范围等我只是觉得这是很好的垃圾和糟糕的做法.

谢谢!

mysql activerecord find ruby-on-rails-3

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