【问题标题】:Passing a variable to the new.html.rb page将变量传递给 new.html.rb 页面
【发布时间】:2010-03-10 11:58:23
【问题描述】:

我有两个 MVC 会议和议程。一个会议可以有许多议程项目。

我正在尝试设置这两个页面,以便我可以在 show.html.rb 会议页面上单击“创建新议程项目”。其想法是,这会将用户重定向到传递会议 ID 的 new.html.rb 议程页面,并使用会议 ID 预先填充 new.html.rb 议程表单。

目前我有以下内容在 URL 中传递会议 ID,但我不知道如何将其传递给表单。

会议:show.html.rb:

<%= link_to "Add Agenda Item", :action => 'new_agenda', :id => @meeting.id %>

温柔点,我是新手。但提前非常感谢。

克里斯蒂安·马塞多。

【问题讨论】:

    标签: ruby-on-rails parameter-passing


    【解决方案1】:

    您的议程控制器中的new 操作应该可以访问会议 ID 查询参数。比如:

    def new
      @agenda = Agenda.new
      @agenda.meetings.build(Meeting.find(params[:id]))
    end
    

    【讨论】:

    • 好的,我尝试添加此内容,但是现在单击新议程项目的链接时出现错误。当你没想到时,你有一个 nil 对象!评估 nil.build 时发生错误,即使情况并非如此。我不明白第二行代码如何获取我在 URL 中传递的会议 ID。我想我在这里非常想念一些东西。或者只是简单的旧做法。
    • 尝试将其更改为@agenda.meeting = Meeting.find(params[:id])。会议 ID 在 params 哈希中传递。详情见这里:guides.rubyonrails.org/routing.html#querystring-parameters
    • 那行不通,因为如果你在新的议程视图中,params[:id] 会给你议程的 id。如果议程是会议的嵌套资源,您可以执行 params[:meeting_id]。此外,@agenda.meetings 没有意义,因为会议有很多议程,而不是相反。
    • 我要收回它。如果您将其作为 :id 传递到新的议程视图中,您应该能够以 params[:id] 的形式访问它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-01-31
    • 1970-01-01
    • 2016-03-13
    • 1970-01-01
    • 2020-06-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多