ruby-on-rails - 在 Controller 之间传递@variable

标签 ruby-on-rails ruby-on-rails-3 rails-activerecord

我的 ProjectProjectSetting 模型具有以下关联:

class Project < ActiveRecord::Base
  has_one :project_setting
end
class ProjectSetting < ActiveRecord::Base
  belongs_to :project
end

projects_controller中我有:

def show
  @project = Project.find(params[:id])
  @project_setting = @project.project_setting
end

因此,我在 @project 显示页面中使用 @project_setting 表单,并且我需要从此页面更新 @project_setting

project_settings_controller中我有:

def update
  @project = Project.find(params[:id]) #problem is here
  @project_setting = @project.project_setting
  if @project_setting.update_attributes(params[:project_setting])
    respond_to do |format|
      format.html { redirect_to project_path(@project) }
      format.js
    end
  end
end

但是这些 Controller 中的@project变量并不相同:

projects_controller#show 中,它是 ID 为 26 的 Project,在 project_settings_controller#update 中,它找到 Project身份证号1

所以我需要将 @project 变量从 projects_controller#show 传递到 project_settings_controller#update

感谢您的帮助!

最佳答案

在 show.html.erb 中,您可以将变量传递回任何 Controller 。例如

<%= link_to "Update project setting", 
  :controller => "project_settings", 
  :action => "update", 
  :project => @project %>

将发送填充有@project变量的参数“project”。

如果您在表单标记中,则可以发送带有隐藏字段标记的变量:

<% hidden_field_tag("project", @project) %>

我希望这会有所帮助。

关于ruby-on-rails - 在 Controller 之间传递@variable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20019153/

相关文章:

ruby-on-rails - Rspec 可以等待 ApplicationJob 的答复吗?

ruby-on-rails - 使用事件记录按月和日查找记录,忽略年份和时间

mysql - rails : has_and_belongs_to_many not saving associated objects (null in join table)

mysql - 如何将数据从生产数据库迁移到开发数据库 (Rails 4)?

mysql - Rails 使用表单基于多个参数搜索模型

ruby-on-rails - FactoryGirl、Rspec 和复杂的数据库结构

ruby-on-rails - Capistrano 部署(cap 部署)失败,身份验证错误

ruby-on-rails - 如何使用 Cucumber 和 Rspec 测试 Rails 3 引擎?

ruby-on-rails - 使用heroku_san gem 时出错:您的 Ruby 版本是 x.x.x,但您的 Gemfile 指定了 x.x.x (Bundler::RubyVersionMismatch)

ruby-on-rails - Rails 无法写入数据库中的序列化数组字段