作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在用户之间有一个单向关系模型(用户有很多关系),它保存两个给定用户的 ID 以及用户 a 对用户 b 的昵称。我想使用一个表单来允许用户传递另一个用户的电子邮件地址和昵称。如果存在具有该电子邮件的用户,则在用户之间创建关系。如果没有用户匹配,请使用该电子邮件创建一个新的“虚拟”用户,然后建立关系。
我对 Rails 比较陌生,首先天真地尝试使用基本的:
= form_for @relationship do |f|
= f.label :email
= f.text_field :email
= f.label :nickname, "Nickname"
= f.text_field :nickname
= f.submit "Submit", class: "btn btn-large btn-primary"
此操作失败,因为关系模型不包含电子邮件属性。然后我尝试了以下方法,认为它可能有效,因为它没有直接引用关系模型。
= form_tag :controller => "relationships", :action => "create" do
= label :email
= text_field :email
= label :nickname, "Nickname"
= text_field :nickname
= submit "Submit", class: "btn btn-large btn-primary"
但这会引发错误“参数数量错误(1 为 2)”
我可以将电子邮件字段添加到关系模型中,但除了我使用它来查找所需用户之外,不需要它。我的计划是使用传递给关系 Controller 中的创建操作的电子邮件和昵称值来创建关系或创建新用户,然后根据情况创建关系。那么如何将任意值传递给 Controller 操作呢?
最佳答案
使用第一种形式,只需在模型中将 attr_accessor
设置为电子邮件属性即可。
这基本上会创建一个临时变量,您可以从表单之类的东西派生该变量,但它不会保存到数据库中。
class Relationship < ActiveRecord::Base # <- Assuming that's the name of your Relationship model
attr_accessor :email
关于ruby-on-rails - 如何将任意(非模型属性)值传递给 Rails 操作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11487709/
我是一名优秀的程序员,十分优秀!