【问题标题】:Nested routes and dot in url in RailsRails 中 url 中的嵌套路由和点
【发布时间】:2013-04-26 11:50:21
【问题描述】:

我正在为一些练习构建一个简单的待办事项应用程序。我的项目有_许多任务和任务属于_项目。

这样我就可以显示 url/projects/1/tasks 我正在嵌套路由:

routes.rb

resources :projects do
  resources :tasks
end

在我的项目显示视图中,我有以下表格:

Add a task:
<%= form_for [@project, @task] do |f| %>
  <%= f.label :Task_name %>
  <%= f.text_field :name, :placeholder => "Task Name" %>
  <%= f.submit 'Create Task' %>
<% end %>

在我的任务控制器中,我正在执行以下操作:

def create
    @project = Project.find(params[:project_id])
    @task = @project.tasks.new(params[:task])
    if @task.save
      redirect_to projects_path(@project)
    else
      redirect_to projects_path(@project)
    end
  end

似乎在 task.save 上,当我重定向并传入项目实例变量时,它会将我重定向到 http://todoapp.dev/projects.5(5 是项目的 ID)而不是 http://todoapp.dev/projects/5

问题可能出在我的控制器中,使用 redirect_to 方法或可能是嵌套路由?

我对 Rails 路由有基本的了解,但可以参考一些建议。

【问题讨论】:

    标签: ruby-on-rails-3 routing controller routes


    【解决方案1】:

    看起来在我的控制器中的 redirect_to 中我使用的是路径的复数版本。 projects_path(@project) 而不是 project_path(@project)。

      def create
        @project = Project.find(params[:project_id])
        @task = @project.tasks.new(params[:task])
        if @task.save
          redirect_to project_path(@project)
        else
          redirect_to project_path(@project)
        end
      end
    

    这最终奏效了。

    【讨论】:

      猜你喜欢
      • 2016-04-16
      • 2015-11-22
      • 2016-03-02
      • 1970-01-01
      • 2014-10-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多